

























Ansible 使用 ansible-playbook 命令来运行指定的 playbook,但是如何指定个别主机运行一个 playbook?
本文使用的是 2.9 版的 ansible:
$ ansible-playbook --version
ansible-playbook 2.9.16
ansible-playbook 命令来运行指定的 playbook,参数帮助如下:
$ ansible-playbook
usage: ansible-playbook [-h] [--version] [-v] [-k]
[--private-key PRIVATE_KEY_FILE] [-u REMOTE_USER]
[-c CONNECTION] [-T TIMEOUT]
[--ssh-common-args SSH_COMMON_ARGS]
[--sftp-extra-args SFTP_EXTRA_ARGS]
[--scp-extra-args SCP_EXTRA_ARGS]
[--ssh-extra-args SSH_EXTRA_ARGS] [--force-handlers]
[--flush-cache] [-b] [--become-method BECOME_METHOD]
[--become-user BECOME_USER] [-K] [-t TAGS]
[--skip-tags SKIP_TAGS] [-C] [--syntax-check] [-D]
[-i INVENTORY] [--list-hosts] [-l SUBSET]
[-e EXTRA_VARS] [--vault-id VAULT_IDS]
[--ask-vault-pass | --vault-password-file VAULT_PASSWORD_FILES]
[-f FORKS] [-M MODULE_PATH] [--list-tasks]
[--list-tags] [--step] [--start-at-task START_AT_TASK]
playbook [playbook ...]
ansible-playbook: error: too few arguments
唯一一个和 inventory 文件相关的参数:-i INVENTORY 的解释是这样的:
-i INVENTORY specify inventory host path or comma separated host list.
用于指定 hosts 文件。
但是如果我们希望从命令行上临时指定主机名称,就没有对应的参数。
我们只能通过最终万能方案:[-e EXTRA_VARS] 来解决问题。首先我们在 playbook 中规定 hosts 为变量:
---
# playbook.yaml
- name: do something
hosts: "{{ variable_host }}"
roles:
- do_something
...
主机 hosts 用 variable_host 变量规定,然后在 EXTRA_VARS 里指定变量:
$ ansible-playbook -e variable_host=web playbook.yaml
这样就临时指定了 playbook.yaml 在名叫 web 的主机或者主机组上执行。
各位读后有什么想法,请在下方留言吧!如果对本文有疑问或者寻求合作,欢迎 联系邮箱 。邮箱已到剪贴板
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。