簡體   English   中英

使用Openstack的Ansible動態庫存

[英]Ansible Dynamic Inventory with Openstack

我正在將多個Linux主機部署到開放堆棧環境,並嘗試使用ansible配置它們。 我在https://github.com/ansible/ansible/blob/devel/contrib/inventory/openstack.py的庫存動態庫存腳本中遇到了一些困難

如果我用靜態主機文件運行ansible,一切正常

# inventory/static-hosts
localhost   ansible_connection=local
linweb01    ansible_host=10.1.1.101
% ansible linweb01 -m ping -i ./inventory/static-hosts \
   --extra-vars="ansible_user=setup ansible_ssh_private_key_file=/home/ian/keys/setup.key"
linweb01 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

但是,如果我使用動態清單,則找不到主機

% ansible linweb01 -m ping -i ./inventory/openstack.py \
   --extra-vars="ansible_user=setup ansible_ssh_private_key_file=/home/ian/keys/setup.key"
linweb01 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname linweb01: Name or service not known\r\n",
    "unreachable": true
}

當我手動運行清單腳本時,找到了主機並且返回的地址正確

% ./inventory/openstack.py --host linweb01
[...]
"name": "linweb01",
"networks": {},
"os-extended-volumes:volumes_attached": [],
"power_state": 1,
"private_v4": "10.1.1.101",
[...]

我的猜測是,清單腳本不知道使用IP地址的“ private_v4”值,盡管我似乎找不到與此相關的參考。

如何使用清單腳本返回的“ private_v4”值作為主機的“ ansible_host”值?

快速查看代碼表明該IP地址應該在interface_ip密鑰中:

hostvars[key] = dict(
    ansible_ssh_host=server['interface_ip'],
    ansible_host=server['interface_ip'],
    openstack=server)

如果需要解決方法,可以嘗試將其添加到group_vars/all.yml

ansible_host: "{{ private_v4 }}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM