使用Ansible进行密码加密并进行管理

使用Ansible来对密码进行加密和管理

在Ansible的playbook中,我们经常需要管理sudo或者ssh密码。但是,如果把这些密码以明文的形式提交到git代码库中,会感到非常不好。虽然加密之后可能还是有点不舒服,但可能比明文好一点。我会创建一个yaml文件,按照主机组的方式,把密码写在group_vars目录下,并对该文件进行加密。

运行 Ansible 的环境

ItemValueOSMac OS X 10.9.4Ansible1.5.4

目标主机

ItemValue対象ホスト192.168.240.34OSCentOS 7認証方式パスワード認証sshユーザーansiblesshパスワードpasswordsudoパスワード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
广告
将在 10 秒后关闭
bannerAds