ansible入门02
1.1 group模块
ansible all -m group -a "name=test state=present system=1 gid=600"
ansible all -m group -a "name=test2 state=present gid=1010"
1.2 script模块:
1.3 template模块:
2. playbook的其它组件
2.1 变量:
ansible facts:系统变量可以直接调用ansible-playbook -e "var=value":自己定义变量,传递变量host variable: host iventory:定义主机变量,在hosts文件中添加group variable:组变量定义方式。定义的变量对于组内所有主机生效[groupname:vars]var=valueroles
2.2 模板:templates
字面量:
字符串:使用单引号或双引号;数字:整数,浮点数;列表:[item1, item2, ...],值可变数据类型元组:(item1, item2, ...),值不可变字典:{key1:value1, key2:value2, ...}布尔型:true/false
算术运算:+, -, *(乘), /(除), //(整除), %(取余), **(次方)比较操作:==(等值比较), !=(不等值比较), >, >=, <, <=逻辑运算:and, or, not
worker_processes {{ ansible_processor_vcpus }};
#或者worker_processes {{ ansible_processor_vcpus-1 }}; #使用减法运算
listen {{ http_port }}; #设置监听端口,也可以使用我们自定义的变量(在hosts文件中对每一个分别设置)
- hosts: websrvs
remote_user: root
tasks:
- name: install nginx
yum: name=nginx state=present
- name: install conf file
template: src=files/nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: restart nginx
tags: instconf
- name: start nginx service
service: name=nginx state=started
handlers:
- name: restart nginx
service: name=nginx state=restarted
ansible-playbook nginx.conf.yaml
worker_processes {{ ansible_processor_vcpus }};
listen {{ http_port }};
2.3 条件判断
ansible all -m setup | grep ansible_os_family #查看系统家族,CentOS显示RedHat
tasks:
- name: install conf file to centos7
template: src=files/nginx.conf.c7.j2
when: ansible_distribution_major_version == "7" #如果是CentOS7的时候
- name: install conf file to centos6
template: src=files/nginx.conf.c6.j2
when: ansible_distribution_major_version == "6" #如果是CentOS6时
scp root@172.18.100.69:/etc/nginx/nginx.conf files/nginx.conf.c6.j2
#把远程主机(CentOS6)上的文件拉取到本地
2.4 循环
- hosts: all
remote_user: root
tasks:
- name: install some packages
yum: name={{ item }} state=present
with_items:
- nginx
- memcached
- php-fpm
ansible-playbook item.yaml #如果没有定义好yum源,出现问题就会终止
- hosts: all
remote_user: root
tasks:
- name: add some groups
group: name={{ item }} state=present
with_items:
- group11
- group12
- group13
- name: add some users
user: name={{ item.name }} group={{ item.group }} state=present
with_items:
- { name: 'user11', group: 'group11' } #键值与键值之间用“:”隔开
- { name: 'user12', group: 'group12' }
- { name: 'user13', group: 'group13' }
ansible-playbook useradd.yaml
2.5 角色(roles):
mkdir -pv roles/{httpd,nginx,mysql}/{files,templates,tasks,handlers,vars,meta,default}
- hosts: websrvs
remote_user: root
roles:
- mysql
- memcached
- nginx
- hosts:
remote_user:
roles:
- { role: nginx, username: nginx }
mkdir /etc/ansible/roles/nginx
cp /root/working/files/nginx.conf.j2 templates/ #复制准备好的配置文件/templates文件夹中
#在roles/nginx/tasks/main.yaml中配置
- name: install nginx packages
yum: name=nginx state=present
- name: install conf file
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
- name: start nginx
service: name=nginx state=started enabled=true
#创建执行文件nginx.yaml
- hosts: all
remote_user: root
roles:
- nginx
ansible-playbook --check nginx.yaml
ansible-playbook nginx.yaml

#创建roles/nginx/handlers/main.yaml
- name: restart nginx
service: name=nginx state=restarted
#在tasks/main.yaml中重新定义
- name: install nginx packages
yum: name=nginx state=present
tags:install
- name: install conf file
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: restart nginx #定义通知机制,当模版发生改变时就通知handlers模块,重启服务
tags:conf
- name: start nginx
service: name=nginx state=started enabled=true
tags:nginxst
ansible-playbook -t install,conf nginx.yaml
#编辑user.yaml
- hosts: all
romote_user: root
vars:
- username: testuser1
- groupname: testgroup1
tasks:
- name: creat group
group: name={{ groupname }} state=present
- name: creat user
user: name={{ username }} state=present
ansible-playbook -e "groupname=mygrp1" -e "username=myuser1" myuser.yaml
#在要传给远程主机的nginx配置文件中修改
user {{ username }};
#在roles/nginx/vars/main.yaml
ansible-playbook --check nginx.yaml
ansible-playbook nginx.yaml
ansibel-playbook -e "username=adm" --check nginx.yaml
ansibel-playbook -t conf -e "username=adm" nginx.yaml #直接修改
- hosts: all
remote_user: root
roles:
- { role: nginx, username: nginx }
- hosts: all
remote_user: root
roles:
- { role: nginx, username: nginx, when: "ansible_distribution_major_version == '7' " }
mkdir -pv /etc/ansible/roles/memcached/tasks
vim tasks/main.yaml
#下面是main.yaml的内容
- name: install package
yum: name=memcached state=present
- name: start memcached
service: name=memcached state=started enabled=true
vim mem.yaml
#下面是mem.yaml的内容
- hosts: all
remote_user: root
roles:
- { role: nginx, when: ansible_distribution_major_version == '7' }
- { role: memcached, when: ansible_hostname == 'memcached' }
mkdir roles/memcached/templates
scp root@172.18.100.69:/etcsysconfig/memcached ./roles/memcached/templates #从远程主机上下载配置文件
ansible all -m setup
vim ./roles/memcached/templates/memcached
#将CACHESIZE="64"改为
CACHESIZE="{{ ansible_memtotal_mb //4 }}"
mv ./roles/memcached/templates/memcached{,.j2} #改后缀名j2
vim ./roles/memcached/tasks/main.yaml
#以下是main.yaml中的内容
- name: install package
yum: name=memcached state=present
- name: install conf file
templates: src=/etc/ansible/roles/templates/memcached.j2 dest=/etc/sysconfig/memcached
notify: restart memcached
tags: memconf
- name: start memcached
service: name=memcached state=started enabled=true
mkdir memcached/handlers
vim ./handlers/main.yaml
#main.yaml
- name: restart memcached
service: name=memcached state=restarted
ansible-playbook /etc/ansible/roles/mem.yaml
ansible入门02的更多相关文章
- 【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用
[网络爬虫入门02]HTTP客户端库Requests的基本原理与基础应用 广东职业技术学院 欧浩源 1.引言 实现网络爬虫的第一步就是要建立网络连接并向服务器或网页等网络资源发起请求.urllib是 ...
- CSS3基础入门02
CSS3 基础入门02 边框相关属性 border-radius 通过这个属性我们可以设置边框圆角,即可以将四个角设置为统一的圆角,也可以单独的设置具体的某一个角的圆角. grammer: borde ...
- [转帖]Ansible 入门秘诀
Ansible 入门秘诀 作者: Jose Delarosa 译者: LCTT jdh8383 | 2019-03-08 09:24 收藏: 2 用 Ansible 自动化你的数据中心的关键点. ...
- Ansible 入门指南 - 学习总结
概述 这周在工作中需要去修改 nginx 的配置,发现了同事在使用 ansible 管理者系统几乎所有的配置,从数据库的安装.nginx 的安装及配置.于是这周研究起了 ansible 的基础用法.回 ...
- Ansible 入门指南 - ansible-playbook 命令
上篇文章Ansible 入门指南 - 安装及 Ad-Hoc 命令使用介绍的额是 Ad-Hoc 命令方式,本文将介绍 Playbook 方式. Playbook 译为「剧本」,觉得还挺恰当的. play ...
- JavaScript基本入门02
目录 JavaScript基础入门 02 条件语句 if 语句 if .. else 语句 switch 结构 循环语句 while 循环 continue 关键字 do...while语句 for ...
- Shell入门02
Shell入门-02 1.重定向 标准输入(<) 标准输出 标准错误重回定向 程序 = 指令 + 数据 命令 变量 在程序中,数据如何输入?又如何输出? 数据输入:键盘 – 标准输入,但是并 ...
- # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结
095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)
094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
随机推荐
- 记一次踩坑:使用ksoap-android时造成的okhttp依赖冲突问题
项目中需要调用webservice接口,android SDK中并没有直接访问webservice接口的方法,于是我引入了ksoap-android的jar包,来实现访问webservice接口.刚开 ...
- docker 离线环境安装oracle
因测试需要,需在内网的测试环境搭建一套docker Oracle 11g环境进行测试,测试环境为redhat 6.6 安装docker 1.7,本机windows 7 环境,安装docker 17.1 ...
- 【调研与分析】标杆学习、知识管理和竞争情报的关系——From Team
注: 1)红色实线箭头表示可以直接使用:例如竞争情报业务输出产品之一的标杆文档可以直接作为公司标杆学习中外部标杆的资料: 2)蓝色虚线箭头表示转化后使用或者间接利用的关系:例如专题调研可以帮助建立内部 ...
- [css]浮动造成的影响
浮动造成的影响: 子元素浮动,父元素无法被撑出高了. 如果要给父元素做通栏background? 如果两个box的子元素都浮动,且希望两个box分行显示? box1 box2 box3: float: ...
- 主从同步DNS(BIND)
看着别人搭建很简单,其实到自己做的时候需要考虑更多的问题. 1.环境 1)操作系统最好一样,配置一样 2)关闭防火墙,selinux,时间要同步(我就是用的纽约的时区,同步中国的时间,虽然时间是相同的 ...
- win10用键盘控制鼠标
打开控制面板 进入轻松使用 更改鼠标的工作方式 勾选启用鼠标键 点击设置鼠标键 应用确定 ctrl+shift+numlock开启鼠标键 小键盘8426上下左右,5类似鼠标单击 ctrl+小键盘加速, ...
- (转)在 ListViewItem 上拖动进行框选
public partial class Form1 : Form { private bool IsMouseDown = false; Rectangle MouseRect = Rectangl ...
- 使用RequireJS并实现一个自己的模块加载器 (二)
2017 新年好 ! 新年第一天对我来说真是悲伤 ,早上兴冲冲地爬起来背着书包跑去实验室,结果今天大家都休息 .回宿舍的时候发现书包湿了,原来盒子装的牛奶盖子松了,泼了一书包,电脑风扇口和USB口都进 ...
- springboot+mybatis项目自动生成
springboot_data_access_demo基于rapid,根据自定义模版生成的基于mybatis+mysql的数据库访问示例项目.简单配置数据库信息,配置不同的生成策略生成可以直接运行访问 ...
- Sybase数据库第三方软件安装
Sybase数据库第三方软件安装 1,安装软件:IQNC160011P_1-20011253.ZIP