54
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Ansibleでパスワードを暗号化して管理する

Ansibleでパスワードを暗号化して管理する

Ansibleのplaybook内にsudoやsshパスワードを管理したい場合がよくありますが、プレーンテキストのままgitリポジトリに放り込むと非常に嫌な感じがします。暗号化した状態でもちょっと嫌ですが、生の状態よりマシかもしれません。
ホストグループ別にgroup_varsディレクトリにパスワードを書いたyamlファイルを作成し、そのファイルを暗号化します。

Ansible実行環境

Item Value
OS Mac OS X 10.9.4
Ansible 1.5.4

対象ホスト

Item Value
対象ホスト 192.168.240.34
OS CentOS 7
認証方式 パスワード認証
sshユーザー ansible
sshパスワード password
sudoパスワード password
暗号化パスワード vaultpass

ansibleのファイル構成

.
├── hosts
├── group_vars
│   └── servers.yml
├── site.yml
├── roles
│   └── common
│       └── tasks
│           └── main.yml
└── vars
     └── main.yml

各ファイルの内容

  • hosts
[servers]
192.168.240.34
  • group_vars/servers.yml
    • hosts内に[]で囲って記述したグループ名.ymlをgroup_varsディレクトリに作成
---
ansible_ssh_user: ansible
ansible_ssh_pass: password
ansible_sudo_pass: password
  • site.yml
    • hosts
      • グループ名を指定
    • var_files
      • グローバルスコープの変数を記述したファイルパスを指定
    • roles
      • 実行するroleを指定
---
- hosts: servers
  vars_files:
    - vars/main.yml
  roles:
      - common
  • roles/common/tasks/main.yml
- name: Install yum packages
  action: yum name={{ item }} state=installed
  with_items:
    - wget
    - tcpdump
    - bind-utils
    - telnet
  • vars/main.yml
---
sudo: yes

暗号化・復号

group_vars/servers.ymlを暗号化してplaybookを実行

echo vaultpass > ~/.ansible_vault_pass # こいつはgitに格納しない
ansible-vault encrypt group_vars/servers.yml --vault-pass ~/.ansible_vault_pass
# --vault-pass を指定しない場合は、パスワードを聞いてくる
ansible-playbook site.yml -i hosts --vault-pass ~/.ansible_vault_pass

group_vars/servers.yml を復号

ansible-vault decrypt group_vars/servers.yml --vault-pass ~/.ansible_vault_pass

group_vars/servers.yml を暗号化したまま編集

ansible-vault edit group_vars/servers.yml --vault-pass ~/.ansible_vault_pass
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
54
Help us understand the problem. What are the problem?