かべぎわブログ

ブログです

ansible-vaultで秘密鍵を暗号化する

秘密鍵も含めて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

​ ​

おわりに

おわり