
У меня есть файл инвентаризации с одним хостом:
10.1.32.123 ansible_ssh_user=бродяга ansible_ssh_pass=бродяга
Мой yaml
файл:
- hosts: all
sudo: yes
gather_facts: yes
serial: 20
roles:
yaml
Я хочу защитить паролем не файл, а файл инвентаря, поскольку он содержит учетные данные пользователя. Это, однако, невозможно, поскольку при запуске сценария содержимое файла инвентаря не расшифровывается. Расшифровывается, если yaml
файл зашифрован.
ansible-playbook inventory site.yml --ask-vault-pass
- Есть ли способ добавить учетные данные
ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
вyaml
файл и просто сохранить IP-адрес в файле инвентаризации.
ДОКУМЕНТЫ:
решение1
Я не думаю, что вы можете зашифровать файл hosts. Гораздо лучшим подходом было бы хранить любую конфиденциальную информацию, например учетные данные, во вторичном файле vars, зашифрованном с помощью ansible-vault, а затем просто включить этот файл в свой плейбук:
- hosts: all
sudo: yes
gather_facts: yes
vars_files:
- /path/to/encrypted/vars.yml
Ваш inventory
файл содержит хост:
10.1.1.2
Ваши vars/vars.yml
учетные данные будут храниться:
ansible_ssh_user: vagrant
ansible_ssh_password: vagrant
Чтобы использовать более одного хоста, вы можете добавить группы в файл инвентаря. Хосты, которые находятся в определенной группе, используют одни и те же учетные данные:
[group1]
10.1.1.2
10.1.1.3
[group2]
10.1.1.4
10.1.1.5
Теперь в вашем плейбуке будет два раздела для хостов:
- hosts: group1
vars_files:
- vars/group1.yml
- hosts: group2
vars_files:
- vars/group2.yml
Файлы group1.yml
и group2.yml
должны иметь один и тот же пароль.