Ansible-playbook简单应用的几个实例
①ansible-playbook的循环:
重复执行某任务;对迭代项的引用,固定变量名为“item”,而后要在task中使用with_items给定要迭代的元素列表,列表方法:字符串/字典(类似json)
- hosts: allremote_user: roottasks:- name: add some groupsgroup: name={{ item }} state=presentwith_items:- demo1- demo2- demo3- name: add some usersuser: name={{ item.name }} group={{ item.group }} state=present //模块中调用的相关参数赋值时前后均无空格with_items:- { name: 'user1',group: 'demo1'} - { name: 'user2',group: 'demo2'}- { name: 'user3',group: 'demo3'} ////此处key后面的:与value之间要有一个空格,否则为语法错误
②ansible-playbook的条件判断:
相当于编程语言中的if语句,不过在ansible中要使用when语句,且要定义在tasks中
- hosts: allremote_user: roottasks:- name: Install httpd conf file to httpd2.2template: src=file/httpd.conf.c6.j2 dest=/etc/httpd/conf/httpd.confwhen: ansible_distribution_major_version == "6"- name: Install httpd conf file to httpd2.4template: src=file/httpd.conf.c7.j2 dest=/etc/httpd/conf/httpd.confwhen: ansible_distribution_major_version == "7"- name: Start httpdservice: name=httpd state=started enabled=true
③ansible-playbook限定执行范围:
当playbook指定的一批主机中有个别主机需进行变更时,不用修改playbook本身,可通过一些命令选项直接进行限定ansible-playbook的命令执行范围。
--limit选项:
ansible-playbook test1.yaml --limit node2 //此时,ansbile-playbook中的hosts即便定义了all,也不会在node2这个组上执行playbook
或者直接在playbook的yaml文件中显式定义hosts要执行的主机,如:
指定单台主机:www.a.com
指定多台主机:www.a.com,www,b.com
指定一组主机:dbserver
也可以在执行playbook前先查看受影响的主机有哪些:
[root@node1 work]# ansible-playbook test2.yaml --list-hosts playbook: test2.yamlplay #1 (all): all TAGS: []pattern: [u'all']hosts (2):node3node2
④ansible加密模块Vault
在执行某些任务时,难免会触及到一些密码或敏感数据,此时需要对相关任务进行加密,ansible自带的Vault可满足大部分需求。
使用ansible-vault命令给文件加密:
[root@node1 work]# ansible-vault encrypt test5.yaml //加密命令 New Vault password: Confirm New Vault password: Encryption successful
此时查看test5.yaml的内容则显示:
[root@node1 work]# cat test5.yaml $ANSIBLE_VAULT;1.1;AES256 32366237663533633838613431653433653061396630346633396232393265376138626630646633 6635646462346665613963303061323164623265303331610a633537393239633832383334386338 39393932633163303136353934343061363330313663633535626138613537633465326232383663 3036336337333163390a623733323635653536316335323663363736303733303362353839356164 38643665363131316631646166396634616131343835366261356130343061356438363530636364 61353764383636386438636662373665613031623366396364306262396536656362336161313630 33323437623435646133643831656433653061316439323931326134386263653665633037393037 62303865383165336362
且直接使用ansible-playbook执行此文件会报错,需要先解密。这里列出ansible-vault命令的几个常用的选项:
ansible-vault命令的其他几个常用选项:edit:用于编辑ansible-vault加密过的文件rekey:重新修改已被加密文件的密码create:创建一个新文件,并直接对其进行加密view:查看经过加密的文件decrypt:解密文件
也可以在当前登录用户的家目录下的.ansible目录中创建一个文件用于存储密码,修改这些文件的权限为600,在运行时,使用如下命令进行:
ansible-playbook test5.yaml --vault-password-file /root/.ansible/vault_pass.txt // --vault-password-file PATH/TO/PASSWD_FILE
⑤简单基于roles来一键部署LAMP环境
首先看一下php的角色目录结构:
[root@node1 roles]# tree php/ php/ ├── default ├── files │ └── php-fpm.conf ├── handlers │ └── main.yaml ├── meta ├── tasks │ └── main.yaml ├── templates │ └── www.conf.j2 └── vars7 directories, 4 files
如果使用yum安装的php-fpm的话,其配置文件被切分成了两部分默认的话,如果基于默认配置的话,则无需修改php-fpm.conf,直接修改www.conf即可。
tasks/main.yaml的内容如下:
- name: install phpyum: name=php,php-fpm state=present - name: create php-fpm groupgroup: name=www state=present - name: create php-fpm useruser: name=www group=www state=present - name: install conf file1copy: src=php-fpm.conf dest=/etc/php-fpm.conf - name: install conf filetemplate: src=www.conf.j2 dest=/etc/php-fpm.d/www.confnotify: restart php-fpmtags: init conf file - name: start php-fpmservice: name=php-fpm state=started
handlers/main.yaml的内容如下:
- name: restart php-fpmservice: name=php-fpm state=restarted
templates/www.conf.j2的内容如下:
listen = {{ ansible_eno16777736.ipv4.address }}:9000//仅做测试演示的话,只修改此项即可。
再来看下httpd的角色目录结构:
[root@node1 httpd]# tree . ├── default ├── files │ └── index.php //php测试页 ├── handlers │ └── main.yaml ├── meta ├── tasks │ └── main.yaml ├── templates │ ├── httpd.conf.j2 //httpd的主配置文件 │ └── php.conf.j2 //此处是基于虚拟主机的php配置 └── vars└── main.yaml7 directories, 6 files
tasks/main.yaml的内容如下:
- name: install htppdyum: name=httpd state=present - name: install conf filetemplate: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf src=php.conf.j2 dest=/etc/httpd/conf.d/php.conf.j2notify: restart httpdtags: change conf file - name: init index.phpcopy: src=index.php dest=/var/www/html/index.php - name: start httpdservice: name=httpd state=started enabled=true
templates/php.conf.j2的内容如下(基于httpd2.4的配置):
DirectoryIndex index.php <VirtualHost *:80>ServerName www.phptest.comDocumentRoot "/var/www/html"ProxyRequests OffProxyPassMatch ^/(.*\.php)$ fcgi://localhost:9000/var/www/html/$1<Directory "/var/www/html">Options NoneAllowOverride NoneRequire all granted</Directory> </VirtualHost>
mysql的角色目录结构大同小异,可自行基于rpm包安装或者其他安装方式定义角色文件即可。
写好角色后,再定义一个任务,跑一下即可,此处任务文件为/etc/ansible/work/role_lamp.yaml,内容如下:
- hosts: tworemote_user: rootroles:- httpd- php- mysql
跑完后,如无报错,且测试页能访问即可。本例只是简单的陈述了下大体的角色架构,里面还有很多需要细细雕琢之处,还需各位多多阅读官方文档或其他相关ansible的书籍,深入学习。
转载于:https://www.cnblogs.com/trymybesttoimp/p/7216860.html
Ansible-playbook简单应用的几个实例相关推荐
- Ansible 学习总结(2)—— Ansible playbook 入门详解
一.Ansible playbook 简单概述 playbook 是 ansible 用于配置,部署,和管理被控节点的剧本.通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远 ...
- 自动化运维工具-----Ansible playbook详解
目录 一.Ansible playbook简介 二.Ansible playbook使用场景 三.Ansible playbook格式 格式简介 核心元素 基本组件 variables变量 模板tem ...
- Ansible playbook
1.什么是playbook playbook :定义一个文本文件,以yml为后缀结尾,那playbook组成如下. play:定义的是主机的角色 task: 定义的是具体执行的任务 总结:playbo ...
- Ansible的简单使用
ansible相关原理简单介绍: ansible是基于ssh服务.ssh服务一般服务器上都自带了. ansible 所有的工作都依赖于核心模块来完成,这些核心模块都是 ansible 自身携带的,若这 ...
- Ansible playbook
一.Ansible playbook 简介和使用场景 1.简介 playbook 是 ansible 用于配置,部署,和管理被控节点的剧本. 通过 playbook 的详细描述,执行其中的一系列 ta ...
- ansible playbook详细教程(笔记)
ctrl F 执行playbook命令 ansible playbook -i "inventory文件名" playbook.yml f 10 (并行级别10) 加参 ...
- Seventh5: YAML syntax Ansible Playbook Ansible variables summaries and QQS | Cloud computing
云计算专题目录 Catalogue | Cloud computing Seventh5: YAML syntax & Ansible Playbook & Ansible varia ...
- ansible playbook play task执行顺序
当我们使用ansible-playbook执行playbook,我们可以指定一个或者多个playbook,而一个playbook中可以有多个play,这些play下面又会存在一个或者多个task,这些 ...
- ansible——playbook剧本的讲解与应用
目录 一.playbook 概述 1.1 playbook 介绍 1.2 Ansible playbook 使用场景 1.3 yaml基本语法规则 1.4 yaml支持的数据结构 1.3 示 ...
- 37: sudo提权 、 Ansible配置 、 Ansible Playbook 、 Ansible进阶 、 总结和答疑
Top NSD AUTOMATION DAY02 案例1:配置sudo权限 案例2:修改Ansible配置 案例3:Playbook应用案例 案例4:Playbook应用案例 1 案例1:配置sudo ...
最新文章
- runtime系统的Cello
- 数据蒋堂 | JOIN延伸 - 维度查询语法
- 第四届国际软件自由日在西安邮电学院的发言
- 【收藏】spring boot+websocket+echarts 后台推送数据用echarts展示
- 现在学Web前端,发展前景如何?好就业吗?
- java反射模式_Java反射机制详解
- python导入模块以及类_python模块的导入以及模块简介
- Redis 与 key 相关的常用命令
- 根据中序和先序遍历创建一颗二叉树☆
- html5 js 手机剪切板,JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)...
- AJAX用法、HTTP头部信息
- php gmssl,关于GmSSL
- VS 2005 下载地址
- mysql慢查询日志时间戳_MySQL慢查询日志释疑总结
- 菜鸟历程1腾讯云服务器 10元学生套餐购买
- linux改文件夹e45,linux 编辑文件时 E45: 'readonly' option is set (add ! to override) 隐藏属性 chattr lsattr...
- 安装SSMS报错:0x80070643
- Armadillo | 复数小记
- python爬虫和医学数据_Python爬虫入门教程 24-100 微医挂号网医生数据抓取
- 搜狐视频Redis云平台Cachecloud开源-视频教程
热门文章
- MacOS Big Sur软件打开“您没有权限打开应用程序”解决办法
- 如何毕业后继续白嫖知网
- Anaconda简介及其下载 安装 配置 使用 卸载
- VHDL | 音乐盒设计(代码类)
- 安装texlive并用latex编写一段中文,最后生成pdf文件
- 高性能计算机存储部件有磁盘阵列,信息存储技术——磁盘阵列解读.pptx
- 台达变频器vfb—d参数表_台达变频器在印刷涂布机上的应用
- python3精要(37)-wxPython(3)-安装
- access开发精要(2)-参照完整性
- 深度梳理这10个国家的AI发展战略