我正在编写 python 脚本来运行 ansible playbook,使用 Ansible 2.4.2.0。
据我所知有一个选择--limit
,这可以限制 Ansible 在特定主机上的运行。
例如:
这是/etc/ansible/hosts
[test]
192.168.0.1
192.168.0.2
下面的命令只会让 Ansible 执行test.yml on 192.168.0.1
:
ansible-playbook test.yml --limit="192.168.0.1"
我想知道如何在 ansible playbook api 中设置选项来完成同样的事情。
我尝试添加到limit='192.168.0.1
在选项中,但它不起作用。
下面是我使用的Python脚本。
from collections import namedtuple
from ansible.parsing.dataloader import DataLoader
from ansible.vars.manager import VariableManager
from ansible.inventory.manager import InventoryManager
from ansible.executor.playbook_executor import PlaybookExecutor
loader = DataLoader()
inventory = InventoryManager(loader=loader, sources=['/etc/ansible/hosts'])
variable_manager = VariableManager(loader=loader, inventory=inventory)
Options = namedtuple('Options', ['listtags', 'listtasks', 'listhosts', 'syntax', 'connection','module_path', 'forks', 'remote_user', 'become', 'become_method', 'become_user', 'verbosity', 'check', 'diff', 'ask_sudo_pass', 'limit'])
options = Options(listtags=None, listtasks=None, listhosts=None, syntax=None, connection='smart', module_path=None, forks=100, remote_user=None, become=None, become_method='sudo', become_user='root', verbosity=None, check=False, diff=False, ask_sudo_pass=None, limit='192.168.0.1')
passwords = {}
pbex = PlaybookExecutor(playbooks=['/home/test.yml'], inventory=inventory, variable_manager=variable_manager, loader=loader, options=options, passwords=passwords)
pbex.run()