0

ansibleに問題があります。いくつかの group_vars フォルダーがあり、このフォルダーには ansible-vault によって暗号化されたファイルがあり、prod と test の間でパスワードが異なります。

├── group_vars
│   ├── app1_prod
│   │   ├── application.yml <- Ancryptes by Ansible Vault prod pass
│   │   └── service.yml
│   ├── app1_test
│   │   ├── application.yml <- Ancryptes by Ansible Vault test pass
│   │   └── service.yml
│   ├── app2_prod
│   │   ├── application.yml <- Ancryptes by Ansible Vault prod pass
│   │   └── service.yml
│   └── app2_test
│       ├── application.yml <- Ancryptes by Ansible Vault test pass
│       └── service.yml

私の在庫ファイルは次のようになります。

[test_hosts]
test_host1
test_host2

[prod_hosts]
prod_host1
prod_host2

[app1_test:children]
test_hosts

[app2_test:children]
test_hosts

[app1_prod:children]
prod_hosts

[app2_prod:children]
prod_hosts

playbook コマンドを実行すると:

ansible-playbook app1_playbook.yml -i ./inventory/hosts -l app1_test -u ssh_user -k --vault-password-file path_to_vault_key 

ボールトのパスワードがファイルに対して間違っていると言って、本番環境および他のグループのファイルを指しているというエラーが表示されます。

Decryption failed on ansible/group_vars/app1_prod/application.yml

これを修正する方法がわかりません。

4

1 に答える 1

0

個人的には、あなたの在庫構造は悪い考えだと思います。私は、PROD サーバーと TEST サーバーを同じインベントリに配置することを容認しません。また、その正当な理由も見当たりません。

次のようにシステムを再構築します。

├── prod
│   ├── ansible.cfg
│   ├── group_vars
│   │   ├── app1
│   │   │   ├── application.yml <- Ancryptes by Ansible Vault prod pass
│   │   │   └── service.yml
│   │   ├── app2
│   │   │   ├── application.yml <- Ancryptes by Ansible Vault prod pass
│   │   │   └── service.yml
├── test
│   ├── ansible.cfg
│   ├── group_vars
│   │   ├── app1
│   │   │   ├── application.yml <- Ancryptes by Ansible Vault prod pass
│   │   │   └── service.yml
│   │   ├── app2
│   │   │   ├── application.yml <- Ancryptes by Ansible Vault prod pass
│   │   │   └── service.yml

もちろん、2 つのホスト ファイルがあります。

製品:

[hosts]
prod_host1
prod_host2

[app1:children]
hosts

[app2:children]
hosts

テスト:

[hosts]
test_host1
test_host2

[app1:children]
hosts

[app2:children]
hosts

ansible.cfg各インベントリ ディレクトリに次の行を含むファイルを用意します。

inventory      = .
vault_password_file = /path/to/vault_password_file
remote_user = ssh_user
ask_pass = True

(インベントリ ディレクトリにコピー/etc/ansible/ansible.cfgして、変更する必要があるものを変更するのが最適です。)

セットアップが完了したら、prodまたはtestディレクトリに移動し、そこから Playbook を実行します。もちろん、プレイブックへのパスを指定する必要があります。

cd prod
ansible-playbook /path/to/playbooks/app_playbook.yml

cd test
ansible-playbook /path/to/playbooks/app_playbook.yml

私を信じてください、在庫の分離により、人生はずっと楽になります。

幸運を!

于 2019-02-20T15:42:42.287 に答える