ras*_*ebo 2 ansible ansible-playbook
我有一个花了很多时间执行的剧本,部分原因是它有很多节点需要运行(我浪费时间用ansible检查所有节点的状态),我需要制作一些在它的中间某处改变.
什么是我可以缩小剧本范围的最佳方式?我考虑过隔离所需的更改和/或仅在单个节点上运行修改后的部分?
这是标签的用途.
您可以使用任何标记组合标记任何任务,然后指定要运行的标记组合(或者,也可以跳过--skip-tags),然后只运行这些指定的任务.
所以一个示例剧本可能如下所示:
- hosts: all
tasks:
- name: copy foo
copy:
src: path/to/foo
dest: path/to/foo
tags:
- copy_foo
- copy
- foo
- name: copy bar
copy:
src: path/to/bar
dest: path/to/bar
tags:
- copy_bar
- copy
- bar
- name: restart foo
service:
name: foo
state: restarted
tags:
- restart_foo
- restart
- foo
- name: restart bar
service:
name: bar
state: restarted
tags:
- restart_bar
- restart
- bar
Run Code Online (Sandbox Code Playgroud)
然后,我可以运行"重启foo"任务ansible-playbook -i path/to/hosts playbook.yml --tags "restart_foo".或者,我可以运行所有与bar相关的标签,并且还可以使用以下任意组合重新启动foo(但不能复制foo):
ansible-playbook -i path/to/hosts playbook.yml --tags "bar,restart_foo"ansible-playbook -i path/to/hosts playbook.yml --tags "restart,copy_bar"ansible-playbook -i path/to/hosts playbook.yml --skip-tags "copy_foo"如果你想改为(或作为一个组合)限制运行游戏的节点,那么你可以使用--limit选项.因此,如果您想将播放限制为仅限于Web服务器,那么您可以将其运行,ansible-playbook -i path/to/hosts playbook.yml --limit webservers甚至将其限制为单个特定主机ansible-playbook -i path/to/hosts playbook.yml --limit web.example.org
遗憾的是,这并没有真正记录在案,即使它非常有用
ansible-playbook -i "hostname," site.yml
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以列出多个主机。如您所见,您需要在名称后放置一个逗号以使其意识到它是一个列表。
| 归档时间: |
|
| 查看次数: |
3080 次 |
| 最近记录: |