Ansible PlayBook+Roles 实践

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

选择gather_facts模块

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 更详细

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值