Ansible: Как получить хосты из тегов в динамическом инвентаре - PullRequest
0 голосов
/ 30 октября 2019

Отказ от ответственности: я новичок в ansible и не смог найти ответ здесь , здесь или здесь .

Мне нужнозапустить playbook против 2 хостов. Я понимаю, как это сделать с помощью статического инвентаря в формате yaml или INI, но я теряюсь, когда пытаюсь использовать динамический инвентарь - в частности, динамический инвентарь * VM1are - vmware_inventory.py . Результаты запуска динамической инвентаризации выглядят следующим образом:

{
    "_meta": {
        "hostvars": {
            "foo_420be125-0a38-6dcd-247c-1d1839717804": {
                "ansible_connection": "ssh",
                "ansible_user": "root",
                "config.cpuHotAddEnabled": false,
                "config.cpuHotRemoveEnabled": false,
                "config.hardware.numCPU": 4,
                "config.instanceUuid": "500b86dc-b51e-25fb-165d-e51c62ecd725",
                "config.name": "foo",
                "config.template": false,
                "guest.guestId": null,
                "guest.guestState": "notRunning",
                "guest.hostName": "foo.bar.com",
                "guest.ipAddress": "1.2.3.4",
                "name": "foo",
                "runtime.maxMemoryUsage": null,
                "stage": "dev"
            },
            "bar_fffe-6f29-3e32-0ce9a80d0ad3": {
                "ansible_connection": "ssh",
            ...
        }
    },
    "activedirectory-devops": {
        "hosts": [
            "foo_420be125-0a38-6dcd-247c-1d1839717804",
            "bar_fffe-6f29-3e32-0ce9a80d0ad3"
        ]
    },
    "all": {
        "children": [
            "activedirectory-devops",
            "centos64Guest",
            "centos7_64Guest",
            "com.vmware.vr.HasVrDisks",
            "other3xLinux64Guest",
            "otherGuest",
            ...

ПРИМЕЧАНИЕ: activedirectory-devops - это «тег» в VMWare vCenter, который (по-видимому) возвращается как ANSIBLE «группа узлов».

Учитывая это, как я могу запустить playbook против хостов в activedirectory-devops? В конце концов, «foo_420be125-0a38-6dcd-247c-1d1839717804» не может быть разрешен DNS.

Мое лучшее предположение:

ansible-playbook -i vmware.yml site.yml

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Не уверен, с каким файлом динамической инвентаризации вы связываете ..

Вы можете попробовать "skip_keys" в файле .ini динамической инвентаризации, чтобы удалить ненужные атрибуты. (снимите комментарий с skip_keys в ini-файле и укажите нежелательные атрибуты)

и для вашей книги воспроизведения с помощью динамического инвентаря:

ANSIBLE_HOSTS variable to always use the VMWare inventory:
export ANSIBLE_HOSTS="/home/blabla/vmware-ansible/query.py"

Or using playbook:
ansible-playbook example.yml -i inventory

, где каталог инвентаря содержит ...

inventory/
  01-openstack.yml          # configure inventory plugin to get hosts from Openstack cloud
  02-dynamic-inventory.py   # add additional hosts with dynamic inventory script
  03-static-inventory       # add static hosts
  group_vars/
    all.yml                 # assign variables to all hosts
0 голосов
/ 31 октября 2019

Я только что решил свой вопрос следующим образом:

ansible activedirectory-devops -m ping --connection=local -i vmware.yml

Результаты:

foo_420be125-0a38-6dcd-247c-1d1839717804 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
bar_fffe-6f29-3e32-0ce9a80d0ad3 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
...