Шифрование доступного файла инвентаризации

Я хочу зашифровать свой доступный файл инвентаризации с помощью доступного хранилища, поскольку он содержит пути к файлам IP / паролей / ключей и т. Д., Которые я не хочу сохранять в удобочитаемом формате.

Это то, что я пробовал.

Моя структура папок выглядит так, как показано ниже

env/
   hosts
   hosts_details
plays/
   test.yml
files/
   vault_pass.txt

env / hosts

[server-a]
server-a-name

[server-b]
server-b-name

[webserver:children]
server-a
server-b

env / hosts_details (файл, который я хочу зашифровать)

[server-a:vars]
env_name=server-a
ansible_ssh_user=root
ansible_ssh_host=10.0.0.1
ansible_ssh_private_key_file=~/.ssh/xyz-key.pem

[server-b:vars]
env_name=server-b
ansible_ssh_user=root
ansible_ssh_host=10.0.0.2
ansible_ssh_private_key_file=~/.ssh/xyz-key.pem

test.yml

---
  - hosts: webserver
    tasks:
      - name: Print Hello world
        debug:
          msg: "Hello World"

Выполнение без шифрования проходит успешно, без ошибок

ansible-playbook -i env/ test.yml 

Когда я шифрую свой файл env / hosts_details с файлом хранилища в files / vault_pass.txt, а затем выполняю playbook, я получаю следующую ошибку

ansible-playbook -i env/ test.yml --vault-password-file files/vault_pass.txt


PLAY [webserver] 
******************************************************************

TASK [setup] 
*******************************************************************
Thursday 10 August 2017  11:21:01 +0100 (0:00:00.053)       0:00:00.053 *******
fatal: [server-a-name]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname server-a-name: Name or service not known\r\n", "unreachable": true}
fatal: [server-b-name]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname server-b-name: Name or service not known\r\n", "unreachable": true}

PLAY RECAP 
*********************************************************************
server-a-name            : ok=0    changed=0    unreachable=1    failed=0
server-b-name            : ok=0    changed=0    unreachable=1    failed=0

Я хочу знать, не упустил ли я что-нибудь или можно зашифровать файл инвентаризации.

Есть ли другая альтернатива тому же?


person shwetha    schedule 10.08.2017    source источник


Ответы (1)


Насколько мне известно, вы не можете зашифровать файлы инвентаризации.
Вместо этого вам следует использовать файлы групповых переменных.

Поместите свои переменные в ./env/group_vars/server-a.yml и server-b.yml в формате YAML:

env_name: server-a
ansible_ssh_user: root
ansible_ssh_host: 10.0.0.1
ansible_ssh_private_key_file: ~/.ssh/xyz-key.pem

И зашифровать server-a.yml и server-b.yml.

Таким образом, ваш инвентарь (файл хостов) будет в виде обычного текста, но все переменные инвентаря (хост и группа) будут зашифрованы.

person Konstantin Suvorov    schedule 10.08.2017
comment
Привет! Спасибо за ваш ответ. Я пробовал это и сталкиваюсь с этим error.ERROR! Unexpected Exception: dictionary update sequence element #0 has length 1; 2 is required - person shwetha; 10.08.2017
comment
Виноват! это была синтаксическая ошибка yaml. Это работает, спасибо за вашу помощь. - person shwetha; 11.08.2017