秘密鍵も含めてGitHubにプッシュしたかった。
プライベートリポジトリとはいえそのままプッシュするのはためらわれたのでansible-vaultで暗号化してみる。
秘密鍵の暗号化
ansible-vault
で秘密鍵を暗号化
パスワードは適当に入力
ansible-vault .ssh/private_key
ここでprivate-keyをcatすると暗号化されているのがわかるはず。
そしてパスワードはこうする
echo 'password' > ./password.yml
playbook
playbookの最初でこうする
--- - hosts: localhost gather_facts: false vars: src_key: /work/.ssh/private_key dest_key: /work/.ssh/decrypted_private_key tasks: - file: dest: "{{ dest_key | dirname }}" mode: 0700 state: directory - copy: src: "{{ src_key }}" dest: "{{ dest_key }}" mode: 0600 - hosts: remote-server tasks: ~~~省略~~~
インベントリ
インベントリで復号化後のsshキーを指定しておく
all: children: remote-server: hosts: example.com: vars: ansible_user: ec2-user ansible_ssh_private_key_file: /work/.ssh/decrypted_private_key
環境変数
パスワードをいちいち聞かれたくないのでパスワードファイルの場所を設定しておく。
パスワードファイルは.gitignoreとかでpushしないようにしておく。
ANSIBLE_VAULT_PASSWORD_FILE=/work/.ssh/password.yml
おわりに
おわり