Добавить имена хостов с внешними vars_files - PullRequest
0 голосов
/ 28 декабря 2018

Я хотел бы добавить свои имена хостов с внешними файлами.

Я использовал в своем мастере playbook vars_files, чтобы добавить свои имена хостов, и, похоже, он не работает.

Мне нужно добавить имена хостов во внешние файлы из проекта моего ansible.
Я не могу использовать файлы хостов и группы, потому что я использую Ansible Tower (3.2.2) , и у него уже есть свой инвентарь.

Обратите внимание, что по некоторым причинам я не могу добавить свой vars_files в проект моей Ansible.

Я уже пытался добавить абсолютный путь.
РЕДАКТИРОВАТЬ: Обратите внимание на ошибкусообщение ниже только через выполнение Ansible Tower.
С командной строкой, оно работает нормально.

---

- hosts:  "{{ hostnames }}"

# include vars from file
  vars_files:
    # this line doesn't work
    - /project/ansible/home/ansible/ansible_scripts/vars/dev.yml
      # this line doesn't work
    # - /project/ansible/home/ansible/ansible_scripts/vars/dev.yml
      # this line doesn't work
    # - ../../../ansible/home/ansible/ansible_scripts/vars/dev.yml
    # this line works fine
    # - vars/dev.yml

# play roles
  roles: 
    - check_info_servers

Ошибка:

ERROR! vars file project/ansible/home/ansible/ansible_scripts/vars/dev.yml was not found on the Ansible Controller.
If you are using a module and expect the file to exist on the remote, see the remote_src option

1 Ответ

0 голосов
/ 28 декабря 2018

К «добавить имена хостов из внешних файлов» вы можете использовать модуль add_host .

Например:

> cat /scratch/dev.yml
my_hosts:
  - host1.example.com
  - host2.example.com
  - host3.example.com


> cat test.yaml
- hosts: localhost
  vars_files:
    - /scratch/dev.yml
  tasks:
    - add_host:
        name: "{{ item }}"
      loop: "{{ my_hosts }}"
    - debug: msg="{{ item }}"
      with_inventory_hostnames:
        - all


> ansible-playbook test.yaml | grep msg
    "msg": "host3.example.com"
    "msg": "host1.example.com"
    "msg": "host2.example.com"
...