①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简单应用的几个实例相关推荐

  1. Ansible 学习总结(2)—— Ansible playbook 入门详解

    一.Ansible playbook 简单概述 playbook 是 ansible 用于配置,部署,和管理被控节点的剧本.通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远 ...

  2. 自动化运维工具-----Ansible playbook详解

    目录 一.Ansible playbook简介 二.Ansible playbook使用场景 三.Ansible playbook格式 格式简介 核心元素 基本组件 variables变量 模板tem ...

  3. Ansible playbook

    1.什么是playbook playbook :定义一个文本文件,以yml为后缀结尾,那playbook组成如下. play:定义的是主机的角色 task: 定义的是具体执行的任务 总结:playbo ...

  4. Ansible的简单使用

    ansible相关原理简单介绍: ansible是基于ssh服务.ssh服务一般服务器上都自带了. ansible 所有的工作都依赖于核心模块来完成,这些核心模块都是 ansible 自身携带的,若这 ...

  5. Ansible playbook

    一.Ansible playbook 简介和使用场景 1.简介 playbook 是 ansible 用于配置,部署,和管理被控节点的剧本. 通过 playbook 的详细描述,执行其中的一系列 ta ...

  6. ansible playbook详细教程(笔记)

    ctrl F  执行playbook命令   ansible ­playbook -­i "inventory文件名" playbook.yml ­f 10 (并行级别10) 加参 ...

  7. Seventh5: YAML syntax Ansible Playbook Ansible variables summaries and QQS | Cloud computing

    云计算专题目录 Catalogue | Cloud computing Seventh5: YAML syntax & Ansible Playbook & Ansible varia ...

  8. ansible playbook play task执行顺序

    当我们使用ansible-playbook执行playbook,我们可以指定一个或者多个playbook,而一个playbook中可以有多个play,这些play下面又会存在一个或者多个task,这些 ...

  9. ansible——playbook剧本的讲解与应用

    目录 一.playbook  概述 1.1  playbook  介绍 1.2  Ansible playbook 使用场景 1.3 yaml基本语法规则 1.4 yaml支持的数据结构 1.3  示 ...

  10. 37: sudo提权 、 Ansible配置 、 Ansible Playbook 、 Ansible进阶 、 总结和答疑

    Top NSD AUTOMATION DAY02 案例1:配置sudo权限 案例2:修改Ansible配置 案例3:Playbook应用案例 案例4:Playbook应用案例 1 案例1:配置sudo ...

最新文章

  1. runtime系统的Cello
  2. 数据蒋堂 | JOIN延伸 - 维度查询语法
  3. 第四届国际软件自由日在西安邮电学院的发言
  4. 【收藏】spring boot+websocket+echarts 后台推送数据用echarts展示
  5. 现在学Web前端,发展前景如何?好就业吗?
  6. java反射模式_Java反射机制详解
  7. python导入模块以及类_python模块的导入以及模块简介
  8. Redis 与 key 相关的常用命令
  9. 根据中序和先序遍历创建一颗二叉树☆
  10. html5 js 手机剪切板,JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)...
  11. AJAX用法、HTTP头部信息
  12. php gmssl,关于GmSSL
  13. VS 2005 下载地址
  14. mysql慢查询日志时间戳_MySQL慢查询日志释疑总结
  15. 菜鸟历程1腾讯云服务器 10元学生套餐购买
  16. linux改文件夹e45,linux 编辑文件时 E45: 'readonly' option is set (add ! to override) 隐藏属性 chattr lsattr...
  17. 安装SSMS报错:0x80070643
  18. Armadillo | 复数小记
  19. python爬虫和医学数据_Python爬虫入门教程 24-100 微医挂号网医生数据抓取
  20. 搜狐视频Redis云平台Cachecloud开源-视频教程

热门文章

  1. MacOS Big Sur软件打开“您没有权限打开应用程序”解决办法
  2. 如何毕业后继续白嫖知网
  3. Anaconda简介及其下载 安装 配置 使用 卸载
  4. VHDL | 音乐盒设计(代码类)
  5. 安装texlive并用latex编写一段中文,最后生成pdf文件
  6. 高性能计算机存储部件有磁盘阵列,信息存储技术——磁盘阵列解读.pptx
  7. 台达变频器vfb—d参数表_台达变频器在印刷涂布机上的应用
  8. python3精要(37)-wxPython(3)-安装
  9. access开发精要(2)-参照完整性
  10. 深度梳理这10个国家的AI发展战略