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封装 ...
随机推荐
- IETF国标查询
IETF官网 https://www.ietf.org/ rfc国标官网 https://www.ietf.org/standards/rfcs/ rfc国标查询 https://www.rfc-ed ...
- samba创建权限(复制)
1.今天发现用samba挂载开发过程中,发现别人的权限和我的经常不一致,导致提交git的时候都被提交了,心想应该有哪里有一个统一设置的可以设置用户的默认权限,后来百度之后找到下面的文章,以后创建文件和 ...
- SQL面试题及答案
我觉得里面有些答案是不正确的,请只作参考 Student(S#,Sname,Sage,Ssex) 学生表 S#:学号:Sname:学生姓名:Sage:学生年龄:Ssex:学生性别 Cour ...
- 常用DOS命令总结
本文主要参考:http://www.jb51.net/article/12360.htm http://blog.csdn.net/kofterry/article/details/5183110 常 ...
- Linux centos7 redis安装教程
1.下载解压 #下载至/home/install(或windows系统下载后上传) mkdir /home/install cd /home/install wget http://124.205.6 ...
- python使用zipfile解压中文乱码问题
在zipfile.ZipFile中获得的filename有中日文则很大可能是乱码,这是因为 在zip标准中,对文件名的 encoding 用的不是 unicode,而可能是各种软件根据系统的默认字符集 ...
- HDU1160FatMouse's Speed
#include<stdio.h> #include<string.h> #include<algorithm> #include<set> #incl ...
- JavaScript 预编译(变量提升和函数提升的原理)
本文部分内容转自https://www.cnblogs.com/CBDoctor/p/3745246.html 1.变量提升 console.log(global); // undefined var ...
- SQL Server2008创建数据库语法
use mastergo if exists(select * from sys.databases where name='MySchool') drop database MySchool -- ...
- 20145221 《Java程序设计》第八周学习总结
20145221 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章部分 - 通用API 通用API 日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用到日志信息 日 ...