Ansibleを使用して仮想マシンにDocker資格情報ストアをインストールしようとしています。
これはplaybook.yamlの資格情報保存コードの一部です。
しかし、問題はgpgキーIDをplay.4から変数としてエクスポートしようとしていますが、play.6でその変数をエコーできないことです。
レジスタを試してみましたが、レジスタ変数が他のゲームのシェルコマンドでは動作しないようです。
- name: 1. Install gpg and pass
apt:
update_cache: yes
name:
- gpg
- pass
- name: 2. Create GPG key
shell: |
cat > /root/gpgKey <<EOF
%echo Generating a default key
Key-Type: default
Subkey-Type: default
Name-Real: abc999
Name-Comment: abc999
Name-Email: [email protected]
Expire-Date: 0
Passphrase: abc999
%commit
%echo done
EOF
- name: 3. Generate keys with `/root/gpgKey` file
shell: |
sudo gpg --batch --generate-key /root/gpgKey
- name: 4. Verify key generation
shell: |
var=$(sudo gpg --list-secret-keys --keyid-format=long | sed '4!d' | tr -d " ")
- name: 5. Download docker-credential-pass
shell: |
export PASS_VERSION="v0.6.0"
wget -q "https://github.com/docker/docker-credential-helpers/releases/download/${PASS_VERSION}/docker-credential-pass-${PASS_VERSION}-amd64.tar.gz" -O - | sudo tar -x -C /usr/bin
sudo chmod 710 "/usr/bin/docker-credential-pass"
- name: 6. Echo GPG id
shell: |
echo $var
ansible-playbook playbook.yaml -vvv
これはplay.6コマンドの出力ですecho $var
。標準出力には何もありません。
changed: [localhost] => {
"changed": true,
"cmd": "echo $var\n",
"delta": "0:00:00.002488",
"end": "2023-04-27 09:36:46.483048",
"invocation": {
"module_args": {
"_raw_params": "echo $var\n",
"_uses_shell": true,
"argv": null,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"stdin": null,
"stdin_add_newline": true,
"strip_empty_ends": true,
"warn": true
}
},
"rc": 0,
"start": "2023-04-27 09:36:46.480560",
"stderr": "",
"stderr_lines": [],
"stdout": "",
"stdout_lines": []
}
ベストアンサー1
コメントについて」register
Ansibleがそれを保存できるようにするには、コマンドの出力が必要です。「そして」私はregister
以前これを試しましたが、register
他のプレイのシェルで変数を使用する方法を見つけることができませんでした。「次のような最小のサンプルスクリプトを見たことがあります。
---
- hosts: localhost
become: true
gather_facts: false
tasks:
- name: 4. Verify key generation
shell:
cmd: "gpg --list-secret-keys --keyid-format=long | sed '4!d' | tr -d ' '"
register: VAR
- name: 6. Echo GPG ID
shell:
cmd: "echo {{ VAR.stdout_lines }}"
register: result
- name: Show result
debug:
var: result
またはより一般的に
---
- hosts: localhost
become: false
gather_facts: false
tasks:
- name: Echo example 1
shell:
cmd: "echo 12:34:56:78:90:AB:CD:EF"
register: VAR
- name: Echo example 2
shell:
cmd: "echo {{ VAR.stdout_lines }}"
register: result
- name: Show registered variable
debug:
var: result
- name: Show result content only
debug:
msg: "{{ result }}"
これは、登録、戻り値、データ構造に慣れる方法を示すためです。
追加文書