ansible使用playbook的简单例子(ansible2.9.7)
一,ansible使用playbook的优点
1,用ansible执行一些简单的任务,使用ad-hoc命令就可以解决问题
如果执行复杂的功能,需要大量的操作,执行的ad-hoc命令会不够方便,这时我们选择使用playbook。
使用playbook你可以方便的重用代码,可以移植到不同的机器上面
可以像函数一样,最大化的复用代码。
如果把常见的操作都编写成playbook,之后管理服务器会变得十分简单
2,playbook使用YMAL语言编写
YMAL语言的格式:
文件的第一行以 "---" (三个连字符)开始,表示是YMAL文件的开始。
在同一行中,#之后的内容表示注释
YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容
同一个列表中的元素应该保持相同的缩进,否则会被当做错误处理
play中hosts/variables/roles/tasks等对象的表示方法都是键值中间以": "分隔表示(":"后面还有一个空格)
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,例子:编写一个简单的playbook
功能:安装screen
#hosts:指定要操作的hosts,如果是所有机器,可以用all
#remote_user: 登录用的用户
#become:是否要切换用户
#become_user:要切换到的用户
#tasks:要执行的任务
#command: 用command模块执行命令
#说明:用dnf安装软件其实应该用dnf模块,我们这里只是做一个演示
[root@centos8 playbook]# vi installscreen.yml
代码:
--- - hosts: yujian remote_user: webop become: yes become_user: root tasks: - name: "安装screen" command: dnf install --quiet -y screen
测试执行:
[liuhongdi@centos8 playbook]$ ansible-playbook installscreen.yml PLAY [yujian] ****************************************************************************************** TASK [Gathering Facts] ********************************************************************************* TASK [安装screen] *************************************************************************************** [WARNING]: Consider using the dnf module rather than running 'dnf'.
If you need to use command because dnf is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message. changed: [121.122.123.47] PLAY RECAP ********************************************************************************************* 121.122.123.47 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
说明:用dnf安装软件应该使用dnf模块
ansible给出了一个warning,
我们这里只做为演示,不用管它
服务器端检查是否安装成功?
[root@blog ~]$ whereis screen screen: /usr/bin/screen /usr/share/screen /usr/share/man/man1/screen.1.gz /usr/share/info/screen.info.gz
安装成功了
三,playbook参数的使用例子:
1,语法检查
[root@centos8 installscreen]# ansible-playbook --syntax-check installscreen.yml
2,列出涉及到的host
[root@centos8 installscreen]# ansible-playbook --list-host installscreen.yml
3,检查会发生的改变,但不是真的执行命令
[root@centos8 installscreen]# ansible-playbook --check installscreen.yml
4,列出tasks
[root@centos8 playbook]# ansible-playbook --list-tasks installscreen.yml
四,例子: 使用playbook执行script并查看执行结果
脚本的功能是发布git分支
1,脚本:
[liuhongdi@centos8 script]$ vi gitpubwww.sh
内容
cd /data/web/think_www; echo "---------------------------------------git status:\n"; git status; echo "---------------------------------------git pull:\n"; git pull origin master; echo "---------------------------------------git status:\n"; git status;
2,发布git分支的playbook
#register: 注册一个变量,用来存储返回的结果
#debug:启用debug模块,把输出结果显示出来
[root@centos8 playbook]# vi gitpubwww.yml
内容
--- - hosts: yujian remote_user: webop become: yes become_user: root tasks: - name: "www项目发布git分支" script: /data/ansible/script/gitpubwww.sh register: gitpub_out - name: "查看结果" debug: var=gitpub_out verbosity=0
3,执行playbook
[liuhongdi@centos8 playbook]$ ansible-playbook gitpubwww.yml
五,查看ansible的版本
[liuhongdi@centos8 ~]$ ansible --version ansible 2.9.7 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/liuhongdi/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible python version = 3.6.8 (default, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]
相关文章
- 简单的防抖和节流的例子
- mysql5.7的jdbc_JDBC连接mysql5.7简单例子
- 使用G2O解决优化问题的简单例子
- gtest测试用例_数据字典简单例子
- 6种绕过Waf的另类木马文件攻击方法,简单易上手,总有一种适合你!
- LinkedList 类 的简单应用
- 说一个最简单的Lucene搜索引擎例子详解编程语言
- Linux解压多个文件的简单方法(linux解压多个文件)
- 安装实现Linux系统USB驱动的简单安装(linux下usb驱动)
- Linux挂载VPN:简单又安全(linux怎么挂vpn)
- Linux 下 NFS挂载的简单实现方法(nfslinux挂载)
- Linux工具链:十分简单的交叉编译方案(linux交叉编译工具链)
- Linux下给用户授权的简单命令(linux赋用户权限命令)
- 简单易懂的Oracle恢复设置指南(oracle恢复设置)
- 一键启动Oracle免安装服务端的简单体验(oracle免安装服务端)
- MySQL创建事件简单实例教程(mysql中创建事件例子)
- 简单易懂MySQL表关联高效分析优化MySQL表关联查询深度解析MySQL表关联的各种用法应用实例如何实现MySQL数据表关联实用技巧MySQL多表关联合并查询手册
- 如何查看Redis链接数的简单方法(如何查redis链接数)
- 探索Redis中简单而强大的键值(redis 键值包括)
- 一个简单实现多条件查询的例子
- 邮件发送简单例子-html文件
- 实现jsp验证码的简单小例子
- Android中的Adapter简单介绍
- 一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
- 轻松创建nodejs服务器(1):一个简单nodejs服务器例子
- Redis总结笔记(二):C#连接Redis简单例子