ansible系列playbook教程实例
2023-06-13 09:15:47 时间
上一篇文章我们讲了ansible的基础用法和安装,不会的请去查看传送门,
这一篇,我们总结一下他的playbook的yml用法,以及基础概念。
一、playbook的简单使用 1、创建文件实例 (1)编辑配置文件[root@tiejiangSRC1 ~]# cd /etc/ansible/ [root@tiejiangSRC1 ansible]# vim test.yml //固定后缀为yml,一定要注意空格 - hosts: testhost user: root tasks: - name: playbook_test shell: touch /tmp/playbook.txt hosts参数指定了对哪些主机进行参作; user参数指定了使用什么用户登录远程主机操作; tasks指定了一个任务,其下面的name参数同样是对任务的描述,在执行过程中会打印出来。(2)执行创建playbook文件文件
[root@tiejiangSRC1 ansible]# ansible-playbook test.yml PLAY [testhost] **************************************************************** TASK [setup] ******************************************************************* ok: [192.168.2.71] ok: [192.168.2.73] ok: [192.168.2.72] TASK [playbook_test] *********************************************************** changed: [192.168.2.71] changed: [192.168.2.73] changed: [192.168.2.72] PLAY RECAP ********************************************************************* 192.168.2.71 : ok=2 changed=1 unreachable=0 failed=0 192.168.2.72 : ok=2 changed=1 unreachable=0 failed=0 192.168.2.73 : ok=2 changed=1 unreachable=0 failed=0(3)现在来查看是否批量创建成功playbook.txt文件。
[root@tiejiangSRC1 ~]# ansible testhost -m command -a ls -l /tmp/playbook.txt 192.168.2.73 | SUCCESS | rc=0 -rw-r--r-- 1 root root 33 4月 19 13:41 /tmp/playbook.txt 192.168.2.71 | SUCCESS | rc=0 -rw-r--r--. 1 root root 33 4月 19 13:41 /tmp/playbook.txt 192.168.2.72 | SUCCESS | rc=0 -rw-r--r--. 1 root root 33 4月 19 13:41 /tmp/playbook.txt(4)给创建的playbook批量导入内容,并查看导入的结果
[root@tiejiangSRC1 ansible]# vim test.yml - hosts: testhost user: root tasks: - name: 铁匠运维网博客 shell: echo "www.tiejiang.org" /tmp/playbook.txt [root@tiejiangSRC1 ansible]# ansible-playbook test.yml PLAY [testhost] **************************************************************** TASK [setup] ******************************************************************* ok: [192.168.2.71] ok: [192.168.2.72] ok: [192.168.2.73] TASK [铁匠运维网博客] ************************************************************* changed: [192.168.2.73] changed: [192.168.2.71] changed: [192.168.2.72] PLAY RECAP ********************************************************************* 192.168.2.71 : ok=2 changed=1 unreachable=0 failed=0 192.168.2.72 : ok=2 changed=1 unreachable=0 failed=0 192.168.2.73 : ok=2 changed=1 unreachable=0 failed=0 [root@tiejiangSRC1 ansible]# ansible testhost -m command -a cat /tmp/playbook.txt 192.168.2.73 | SUCCESS | rc=0 www.tiejiang.org 192.168.2.71 | SUCCESS | rc=0 www.tiejiang.org 192.168.2.72 | SUCCESS | rc=0 www.tiejiang.org2、创建用户实例 1、编辑配置文件
[root@tiejiangSRC1 yml]# vim create_user.yml - name: create_user hosts: testhost user: root gather_facts: false vars: - user: "tiejiang" tasks: - name: create user user: name="{{ user }}" name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值 ,可以省略; gather_facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setup获取的信息时用到; vars参数指定了变量,这里指字一个user变量,其值为test ,需要注意的是,变量值一定要用引号引住; user提定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。2、执行配置文件
[root@tiejiangSRC1 ansible]# ansible-playbook create_user.yml PLAY [create_user] ************************************************************* TASK [create user] ************************************************************* changed: [192.168.2.73] changed: [192.168.2.71] changed: [192.168.2.72] PLAY RECAP ********************************************************************* 192.168.2.71 : ok=1 changed=1 unreachable=0 failed=0 192.168.2.72 : ok=1 changed=1 unreachable=0 failed=0 192.168.2.73 : ok=1 changed=1 unreachable=0 failed=03、查看远程机器的passwd文件,是否创建出来了用户
[root@tiejiangSRC1 ansible]# ansible testhost -m command -a grep tiejiang /etc/passwd 192.168.2.73 | SUCCESS | rc=0 tiejiang:x:502:502::/home/tiejiang:/bin/bash 192.168.2.72 | SUCCESS | rc=0 tiejiang:x:501:501::/home/tiejiang:/bin/bash 192.168.2.71 | SUCCESS | rc=0 tiejiang:x:502:502::/home/tiejiang:/bin/bash二、playbook循环
实例:修改/tmp目录下的1.txthe 2.txt文件属性
1、去新建实验文件[root@tiejiangSRC1 yml]# cat touch1and2.yml - hosts: testhost user: root tasks: - name: 创建实验文件 shell: touch /tmp/{1.txt,2.txt} [root@tiejiangSRC1 yml]# ansible-playbook touch1and2.yml PLAY [testhost] **************************************************************** TASK [setup] ******************************************************************* ok: [192.168.2.73] ok: [192.168.2.71] ok: [192.168.2.72] TASK [创建实验文件] ****************************************************************** changed: [192.168.2.73] [WARNING]: Consider using file module with state=touch rather than running touch changed: [192.168.2.71] changed: [192.168.2.72] PLAY RECAP ********************************************************************* 192.168.2.71 : ok=2 changed=1 unreachable=0 failed=0 192.168.2.72 : ok=2 changed=1 unreachable=0 failed=0 192.168.2.73 : ok=2 changed=1 unreachable=0 failed=02、编辑配置文件
[root@tiejiangSRC1 yml]# cat loop.yml - hosts: testhost user: root tasks: - name: change mode for files file: path=/tmp/{{ item }} mode=600 owner=root group=root with_items: - 1.txt - 2.txt3、执行配置文件
[root@tiejiangSRC1 yml]# ansible-playbook loop.yml PLAY [testhost] **************************************************************** TASK [setup] ******************************************************************* ok: [192.168.2.71] ok: [192.168.2.72] ok: [192.168.2.73] TASK [change mode for files] *************************************************** changed: [192.168.2.73] = (item=1.txt) changed: [192.168.2.71] = (item=1.txt) changed: [192.168.2.72] = (item=1.txt) changed: [192.168.2.73] = (item=2.txt) changed: [192.168.2.71] = (item=2.txt) changed: [192.168.2.72] = (item=2.txt) PLAY RECAP ********************************************************************* 192.168.2.71 : ok=2 changed=1 unreachable=0 failed=0 192.168.2.72 : ok=2 changed=1 unreachable=0 failed=0 192.168.2.73 : ok=2 changed=1 unreachable=0 failed=0三、playbook条件判断
条件判断一般用于针对不同版本的系统,比如对centos、ubuntu 等系统进行不同的操作命令。
1、编辑配置文件[root@tiejiangSRC1 yml]# vim when.yml - hosts: testhost user: root gather_facts: True tasks: - name: use when shell: touch /tmp/when.txt when: ansible_default_ipv4.address == "192.168.2.73"2、执行配置文件
[root@tiejiangSRC1 yml]# ansible-playbook when.yml PLAY [testhost] **************************************************************** TASK [setup] ******************************************************************* ok: [192.168.2.71] ok: [192.168.2.73] ok: [192.168.2.72] TASK [use when] **************************************************************** skipping: [192.168.2.71] skipping: [192.168.2.72] changed: [192.168.2.73] [WARNING]: Consider using file module with state=touch rather than running touch四、playbook handlers
PLAY RECAP ********************************************************************* 192.168.2.71 : ok=1 changed=0 unreachable=0 failed=0 192.168.2.72 : ok=1 changed=0 unreachable=0 failed=0 192.168.2.73 : ok=2 changed=1 unreachable=0 failed=0
当我们执行 tasks 后,服务器发生变化之后我们要执行一些操作。比如我们修改了某个服务的配置文件,需要重启下服务。实例如下:
1、编辑配置文件[root@tiejiangSRC1 yml]# vim handlers.yml - name: handlers test hosts: testhost user: root tasks: - name: test copy copy: src=/etc/passwd dest=/tmp/handlers.txt notify: test handlers handlers: - name: test handlers shell: echo "www.tiejiang.org" /tmp/handlers.txt
说明:只有 copy 模块真正执行后,才会去调用下面的 handlers 相关的操作,追加内容。也就是说如果 src 和 dest 内容是一样的,并不会去执行 handlers 里面的 shell 相关命令。所以这种比较适合配置文件发生更改后,需要重启服务的操作。
2、执行配置文件[root@tiejiangSRC1 yml]# ansible-playbook handlers.yml PLAY [handlers test] *********************************************************** TASK [setup] ******************************************************************* ok: [192.168.2.73] ok: [192.168.2.71] ok: [192.168.2.72] TASK [test copy] *************************************************************** changed: [192.168.2.71] changed: [192.168.2.73] changed: [192.168.2.72] RUNNING HANDLER [test handlers] ************************************************ changed: [192.168.2.71] changed: [192.168.2.73] changed: [192.168.2.72] PLAY RECAP ********************************************************************* 192.168.2.71 : ok=3 changed=2 unreachable=0 failed=0 192.168.2.72 : ok=3 changed=2 unreachable=0 failed=0 192.168.2.73 : ok=3 changed=2 unreachable=0 failed=03、查看执行结果
[root@tiejiangSRC1 yml]# ansible testhost -m command -a tail -n 1 /tmp/handlers.txt //这里我直接用-n 1显示handlers.txt的最后一行内容 192.168.2.71 | SUCCESS | rc=0 www.tiejiang.org 192.168.2.73 | SUCCESS | rc=0 www.tiejiang.org 192.168.2.72 | SUCCESS | rc=0 www.tiejiang.org
可查看到 copy 文件成功,同时也执行了 handlers 的相关命令,追加了新的信息。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/55105.html
AnsiblecentosshellUbuntu相关文章
- wxPython中文教程入门实例「建议收藏」
- html导航栏纵向代码,html横向导航栏怎么做?横向导航条代码实例
- 数据仓库与数据挖掘的一些基本概念是_数据挖掘的实例
- python中turtle.write的用法_菜鸟教程python3实例
- vb教程编程实例详解pdf_vb程序设计教程第五版答案
- R语言爬虫教程与实例操作:如何爬取基金与Pubmed网站信息
- CloudFlare 域名解析实例 图文教程
- Redis教程(十五):C语言连接操作代码实例
- MySQL IF语句控制实例介绍(mysqlif控制流程)
- MySQL安装多实例:快速教程(mysql安装多实例)
- 教程C连接MySQL:从零开始的实例教程(c连接mysql实例)
- PostgreSQL实例实战:了解数据库管理系统(postgresql实例)
- MySQL登录教程从实例中学习(c mysql登录列子)
- Oracle11轻松下载教程实例解析(oracle11如何下载)
- Javascript&DHTML实例编程(教程)DOM基础和基本API
- asp读取xml实例代码
- javascript实现TreeView无刷新展开的实例代码
- jqueryvalidation验证身份证号,护照,电话号码,email(实例代码)
- python抓取京东商城手机列表url实例代码
- Python基础之函数用法实例详解
- Lua进阶教程之闭包函数、元表实例介绍