1. 测试简单临时命令
# 新建 清单文件 prod.yml
---
all:
hosts:
children:
harbor:
hosts:
10.10.10.76:
10.10.10.77:
dbpg:
hosts:
10.10.10.74:
10.10.10.75:
geode:
hosts:
10.10.10.72:
10.10.10.73:
apps:
hosts:
10.10.10.70:
10.10.10.71:
webs:
hosts:
192.168.100.16:
192.168.100.17:
proxy:
hosts:
10.10.10.20:
vars:
ansible_ssh_port: 1046
master:
hosts:
10.10.10.75:
children:
harbor:
apps:
worker:
hosts:
10.10.10.74:
children:
geode:
apps:
webs:
proxy:
temp:
hosts:
10.10.10.76:
---
# 测试简单命令
ansible harbor -i prod.yml --list-hosts
ansible harbor -i prod.yml -m 'shell' -a 'pwd'
2. 临时命令测试模块
Ansible支持的模块可以从https://docs.ansible.com/ansible/latest/collections/index.html 查看,
这里简单测试 ansible的内建模块https://docs.ansible.com/ansible/latest/collections/ansible/builtin/index.html#plugins-in-ansible-builtin
ansible harbor -i prod-servers.yml -m gather_facts --tree /tmp/facts
3. 建立角色目录结构
touch site.yml
touch prod-servers.yml
mkdir -p roles/common/{tasks,handlers,files,templates,vars,defaults,meta}
mkdir -p roles/swarm/{tasks,handlers,files,templates,vars,defaults,meta}
注:prod-servers.yml 与上面的prod.yml 内容一样。
Ansible执行的入口文件
cat > site.yml<<EOF
- name: role test 001
hosts:
- harbor # 清单文件中的 主机分组
roles:
- common
- swarm
EOF
特定角色下的文件夹下的入口文件main.yml
cat > roles/common/tasks/main.yml<<EOF
- name: default import tasks example
import_tasks: shell-pwd.yml
- name: condition import tasks example
import_tasks: redhat.yml
when: ansible_facts['os_family']|lower == 'redhat'
EOF
cat > roles/common/tasks/shell-pwd.yml<<EOF
- name: cat path
shell: pwd
EOF
cat > roles/common/tasks/redhat.yml<<EOF
- name: cat os
shell: "cat /etc/redhat-release"
EOF
初步测试:
ansible-playbook -i prod-servers.yml site.yml
总结:
ansible-playbook 通过 -i 指定清单文件, 最后参数指定要执行的 play 文件 site.yml(可以是其它名字),site 文件中hosts 指定task 执行的范围
ansible-playbook常用选项: --check or -C #只检测可能会发生的改变,但不真正执行操作 --list-hosts #列出运行任务的主机 --list-tags #列出playbook文件中定义所有的tags --list-tasks #列出playbook文件中定义的所以任务集 --limit #主机列表 只针对主机列表中的某个主机或者某个组执行 -f #指定并发数,默认为5个 -t #指定tags运行,运行某一个或者多个tags。(前提playbook中有定义tags) -v #显示过程 -vv 详细 -vvv 更详细