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封装 ...
随机推荐
- 使用JavaScript修改浏览器URL地址栏的实现代码
现在的浏览器里,有一个十分有趣的功能,你可以在不刷新页面的情况下修改浏览器URL;在浏览过程中.你可以将浏览历史储存起来,当你在浏览器点击后退按钮的时候,你可以冲浏览历史上获得回退的信息,这听起来并不 ...
- 【开发者笔记】揣摩Spring-ioc初探,ioc是不是单例?
前言: 控制反转(Inversion of Control,英文缩写为IoC)把创建对象的权利交给框架,是框架的重要特征,并非面向对象编程的专用术语.它包括依赖注入(Dependency Inject ...
- http-从域名到页面
目录 1. 网络基础 TCP/IP HTTP DNS URI, URL, and URN URI的格式 2. HTTP简单概括 通过实例看HTTP HTTP报文组成 3. 使用Firefox修改请求首 ...
- android studio gradle 国内代理
使用阿里云的国内镜像仓库地址,就可以快速的下载需要的文件 修改项目根目录下的文件 build.gradle : buildscript { repositories { maven{ url 'htt ...
- Q_OBJECT宏的作用
The Q_OBJECT macro at the beginning of the class definition is necessary for all classes that define ...
- hdu5021 树状数组+二分
这 题 说 的 是 给 了 一 个 K—NN 每次查询离loc 最近的k个数 然后将这k个数的权值加起来除以k 赋值给 loc 这个位置上的 权值 我说说 我的做法 假如 查询的是loc 这个 ...
- PDO的三种连接数据库的方式
PDO的三种连接数据库的方式 PDO的出现是为了解决PHP与各个数据库的连接处理都有各自的函数的问题,它的高度抽象,使得使用起来极其的方便.由于最常用的搭配就是PHP+Mysql,所以这里就以连接 ...
- linux及安全《Linux内核设计与实现》第二章——20135227黄晓妍
第二章:从内核出发 2.1获取源代码 2.1.1使用git Git:内核开发者们用来管理Linux内核源代码的控制系统. 我们使用git来下载和管理Linux源代码. 2.1.2安装内核源代码(如果使 ...
- 使用ShellExecute打开目标文件所在文件夹并选中目标文件
转载:http://blog.csdn.net/chenlycly/article/details/7366364 转载:http://bbs.csdn.net/topics/50440550 She ...
- hbase(三)coprocessor
介绍 coprocessor这个单词看起来很神秘,直译为协处理器,其实可以理解成依赖于regionserver进程的辅助处理接口. hbae在0.92版本之后提供了coprocessor接口.目前hb ...