古董交易网站怎么做,展示网站动画怎么做的,中国工程造价网,学做网站设计目录
一.inventory主机清单
1.定义
2.变量
#xff08;1#xff09;主机变量
#xff08;2#xff09;组变量
#xff08;3#xff09;组嵌套
二.playbook基本内容
1.组成
#xff08;1#xff09;Tasks: 任务#xff0c;即调用模块完成的某操作
#xff0…目录
一.inventory主机清单
1.定义
2.变量
1主机变量
2组变量
3组嵌套
二.playbook基本内容
1.组成
1Tasks: 任务即调用模块完成的某操作
2Variables: 变量
3Templates: 模板
4Handlers: 处理器当某条件满足时触发执行的操作
5Roles: 角色
2.基本语法
1大小写敏感
2使用缩进表示层级关系
3缩进时不允许使用tab键、只允许使用空格
4缩进的空格数目不重要只要相同层级的元素左侧对齐即可
3.数据结构
1对象键值对的集合又称为映射mapping/ 哈希hashes/ 字典dictionary
2数组一组按次序排列的值又称为序列sequence/ 列表list
3纯量单个的、不可再分的值
三.playbook示例
1.为每个任务定义远程执行用户
2.指定远程主机切换用户执行剧本
3.tasks忽略错误强制返回成功
1Play的主体部分是task列表task列表中的各任务按次序逐个在hosts中指定的主机上执行即在所有主机上完成第一个任务后再开始。在运行playbook时 (从上到下执行)如果一个host执行task失败 整个tasks都会停止。
2每一个task必须有一个名称 name这样在运行playbook时从其输出的任务执行信息中可以很好的辨别出是属于哪一个task的。
4.针对多个主机节点执行剧本
5.Handlers概述
6.引入变量
1通过ansible命令参数-e传递
2 直接在yaml中定义或者内置变量
3引用主机清单内自定义变量
7.条件测试
1单条件判断
2多条件判断
3组条件判断
4迭代
四.template
1.先准备一个以 .j2 为后缀的 template 模板文件设置引用的变量
2.修改主机清单文件使用主机变量定义一个变量名相同而值不同的变量
3.编写 playbook
五.tags模块
六.playbook使用roles
1.roles内各自目录含义
2.在playbook中使用roles 一.inventory主机清单
1.定义
Inventory支持对主机进行分组每个组内可以定义多个主机每个主机都可以定义在任何一个或多个主机组内。
2.变量
1主机变量
[webservers]
192.168.10.14 ansible_port22 ansible_userroot ansible_passwordabc1234
2组变量
[webservers:vars] #表示为 webservers 组内所有主机定义变量
ansible_userroot
ansible_passwordabc1234[all:vars] #表示为所有组内的所有主机定义变量
ansible_port22
3组嵌套
[nginx]
192.168.10.20
192.168.10.21
192.168.10.22[apache]
192.168.10.3[0:3][webs:children] #表示为 webs 主机组中包含了 nginx 组和 apache 组内的所有主机
nginx
apache 二.playbook基本内容
1.组成
1Tasks: 任务即调用模块完成的某操作
2Variables: 变量
3Templates: 模板
4Handlers: 处理器当某条件满足时触发执行的操作
5Roles: 角色
2.基本语法
1大小写敏感
2使用缩进表示层级关系
3缩进时不允许使用tab键、只允许使用空格
4缩进的空格数目不重要只要相同层级的元素左侧对齐即可
hosts定义节点可以是组remote_user是你以什么用户身份进行登陆tasks是你的任务become:yes表示切换用户become_user: mysql表示切换到mysql用户配合上一条使用- name:为下面执行的操作起名
3.数据结构
1对象键值对的集合又称为映射mapping/ 哈希hashes/ 字典dictionary
2数组一组按次序排列的值又称为序列sequence/ 列表list
3纯量单个的、不可再分的值 三.playbook示例
ansible-playbook xxx.yaml --syntax-check #检查yaml文件的语法是否正确
ansible-playbook xxx.yaml --list-task #检查tasks任务
ansible-playbook xxx.yaml --list-hosts #检查生效的主机
ansible-playbook xxx.yaml --start-at-taskxxx #指定从某个task开始运行- hosts: webserver #指定主机组可以是一个或多个组remote_user: root #指定远程主机执行的用户名
参数说明-k-ask-pass用来交互输入ssh密码-K-ask-become-pass用来交互输入sudo密码-u指定用户-e引入变量值
1.为每个任务定义远程执行用户
cd /opt
vim 1.yaml- hosts: mysqlremote_user: roottasks:- name: test connectionping:remote_user: mysql ansible mysql -m user -a namemysql
ansible mysql -m shell -a echo 123123 | passwd --stdin mysql
ansible-playbook 1.yaml -k
123123 2.指定远程主机切换用户执行剧本
vim 2.yaml- hosts: mysqlremote_user: rootbecome: yes become_user: mysql tasks:- name: copy textcopy: src/etc/fstab dest/home/mysql/fstab.bakansible-playbook 2.yaml 3.tasks忽略错误强制返回成功
1Play的主体部分是task列表task列表中的各任务按次序逐个在hosts中指定的主机上执行即在所有主机上完成第一个任务后再开始。在运行playbook时 (从上到下执行)如果一个host执行task失败 整个tasks都会停止。
2每一个task必须有一个名称 name这样在运行playbook时从其输出的任务执行信息中可以很好的辨别出是属于哪一个task的。
错误示例遇到错误task自动停止apache服务不会继续安装
vim 3.yaml- hosts: webserverremote_user: roottasks:- name: stop selinuxcommand: /usr/sbin/setenforc 0- name: install httpdyum: namehttpd- name: start httpdservice: namehttpd statestartedansible-playbook 3.yaml 加入ignore_errors: True 忽略错误报错后继续执行
vim 3.yaml- hosts: webserverremote_user: roottasks:- name: stop selinuxcommand: /usr/sbin/setenforc 0ignore_errors: True- name: install httpdyum: namehttpd- name: start httpdservice: namehttpd statestartedansible-playbook 3.yaml 4.针对多个主机节点执行剧本
vim 4.yaml- hosts: webserverremote_user: roottasks:- name: remove httpdyum: namehttpd stateabsent- hosts: mysqlremote_user: roottasks:- name: copy filecopy: src/etc/fstab dest/opt/haha.txt 5.Handlers概述
Handlers也是一些task的列表 和一般的task并没有什么区别。 是由通知者进行的notify如果没有被notify则Handlers不会执行假如被notify了 则Handlers被执行不管有多少个通知者进行了notify等到play中的所有task执行完成之后handlers也只会被执行一次
vim 5.yaml- hosts: webserverremote_user: roottasks:- name: remove httpdyum: namehttpd stateabsent- name: start firewalldservice: namefirewalld statestarted- name: setenforce 0 install httpdcommand: /usr/sbin/setenforce 0notify:- step one- name: stop firewalld start httpdservice: namefirewalld statestoppednotify:- step twohandlers:- name: step oneyum: namehttpd- name: step twoservice: namehttpd statestartedansible-playbook 5.yaml 6.引入变量
1通过ansible命令参数-e传递
vim 6_1.yaml- hosts: mysqlremote_user: rootvars:- user:tasks:- name: add useruser: name{{user}}ansible-playbook 6_1.yaml -e userwangwu
ansible mysql -a tail -1 /etc/passwd 2 直接在yaml中定义或者内置变量
vim 6_2.yaml- hosts: mysqlremote_user: rootvars:- user: lisitasks:- name: add useruser: name{{user}}ansible-playbook 6_2.yaml
ansible mysql -a tail -1 /etc/passwd vim 6_2.yaml- hosts: mysqlremote_user: roottasks:- name: copy filecopy: content{{ansible_all_ipv4_addresses}} dest/opt/vars.txtansible-playbook 6_2.yaml
ansible mysql -a ls /opt
ansible mysql -a cat /opt/vars.txt 3引用主机清单内自定义变量
vim /etc/ansible/hosts[webserver]
192.168.227.101
[mysql]
192.168.227.102 userwskvim 6_3.yaml- hosts: mysqlremote_user: roottasks:- name: add useruser: name{{user}}ansible-playbook 6_3.yaml
ansible mysql -a tail -1 /etc/passwd 7.条件测试
如果需要根据变量、facts (setup) 或此前任务的执行结果来作为某task执行与否的前提时要用到条件测试在Playbook中条件测试使用。在task后添加when子句即可使用条件测试: when子句支持 jinjia2 表达式或语法
1单条件判断
vim 7_1.yaml- hosts: mysqlremote_user: roottasks:- name: shutdown CentOScommand: /sbin/shutdown -h nowwhen: ansible_distribution CentOSansible-playbook 7_1.yaml 2多条件判断
vim 7_2.yaml- hosts: mysqlremote_user: roottasks:- name: shut down CentOS 7 systemscommand: /sbin/shutdown -r nowwhen:- ansible_distribution CentOS- ansible_distribution_major_version 7ansible-playbook 7_2.yaml
3组条件判断
vim 7_3.yml- hosts: mysqlremote_user: roottasks:- name: shut down CentOS 6 and Debian 7 systemscommand: /sbin/shutdown -t nowwhen: (ansible_distribution CentOS and ansible_distribution_major_version 6) or (ansible_distribution Debian and ansible_distribution_major_version 7)ansible-playbook 7_3.yaml
4迭代
vim 7_4.yaml- hosts: webserverremote_user: roottasks:- name: installyum: name{{item}} statelatestwith_items:- httpd- rpcbind- nfs-utilsansible-playbook 7_4.yaml
ansible webserver -a rpm -q httpd
ansible webserver -a rpm -q rpcbind
ansible webserver -a rpm -q nfs-utils 四.template
Jinja是基于Python的模板引擎。Template类是Jinja的一个重要组件可以看作是一个编译过的模板文件用来产生目标文本传递Python的变量给模板去替换模板中的标记。
1.先准备一个以 .j2 为后缀的 template 模板文件设置引用的变量
yum -y install httpd
rpm -qc httpd
cp /etc/httpd/conf/httpd.conf /opt/httpd.conf.j2
vim /opt/httpd.conf.j2
Listen {{http_port}} #42行修改
ServerName {{domain}} #95行修改2.修改主机清单文件使用主机变量定义一个变量名相同而值不同的变量
vim /etc/ansible/hosts[mysql]
192.168.227.101 port80 domainwww.wsk1.com
192.168.227.102 port80 domainwww.wsk2.com 3.编写 playbook
cd /opt
vim a.yaml- hosts: mysqlremote_user: rootvars:- package: httpd- service: httpdtasks:- name: install serviceyum: name{{package}} statelatest- name: httpd.conftemplate: src/opt/httpd.conf.j2 dest/etc/httpd/conf/httpd.confnotify: restart service- name: start serviceservice: name{{service}} statestarted enabledtruehandlers:- name: restart serviceservice: name{{service}} staterestartedansible-playbook a.yaml
ansible mysql -a rpm -q httpd
ansible mysql -a systemctl status httpd
ansible mysql -a systemctl is-enabled httpd 五.tags模块
可以在一个playbook中为某个或某些任务定义“标签”在执行此playbook时通过ansible-playbook命令使用--tags选项能实现仅运行指定的tasks。 playbook还提供了一个特殊的tags为always。作用就是当使用always当tags的task时无论执行哪一个tags时定义有always的tags都会执行。
vim b.yaml- hosts: mysqlremote_user: roottasks:- name: touch file onefile: path/opt/1.txt statetouchtags:- file one- name: touch file twofile: path/opt/2.txt statetouchtags:- file two- name: touch file threefile: path/opt/3.txt statetouchtags:- file threeansible-playbook b.yaml --tagsfile two
ansible-playbook b.yaml --skip-tagsfile one 六.playbook使用roles
Ansible为了层次化、结构化地组织Playbook使用了角色rolesroles可以根据层次型结构自动装载变量文件、task以及handlers等。简单来讲roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中并可以便捷地include它们。roles一般用于基于主机构建服务的场景中但也可以用于构建守护进程等场景中。
1.roles内各自目录含义
files用来存放copy模块或script模块调用的文件templates用来存放jinjia2模板template模块会自动在此目录中寻找jinjia2模板文件tasks此目录应当包含一个main.yml文件用于定义此角色的任务列表此文件可以使用include包含其它的位于此目录的task文件handlers此目录应当包含一个main.yml文件用于定义此角色中触发条件时执行的动作vars此目录应当包含一个main.yml文件用于定义此角色用到的变量defailts此目录应当包含一个main.yml文件用于为当前角色设定默认变量meta此目录应当包含一个main.yml文件用于定义此角色的特殊设及其依赖关系
2.在playbook中使用roles
#创建服务组件工作目录
mkdir -p /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta}
mkdir -p /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta}
mkdir -p /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} #创建yml空文件
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml
#编写httpd模块
vim /etc/ansible/roles/httpd/tasks/main.yml - name: install httpdyum: pkg{{pkg}} statelatest#定义变量pkg软件包
vim /etc/ansible/roles/httpd/vars/main.yml pkg: httpd
#编写mysql模块
vim /etc/ansible/roles/mysql/tasks/main.yml - name: install mysqlyum: pkg{{pkg}} statelatestvim /etc/ansible/roles/mysql/vars/main.yml pkg: mariadb*
#编写php模块
vim /etc/ansible/roles/php/tasks/main.yml - name: install phpyum: pkg{{pkg}} statelatestvim /etc/ansible/roles/php/vars/main.yml pkg: php
#编写roles示例
vim /etc/ansible/site.yml
remote_user: root
roles:- httpd- mysql- php 文章转载自: http://www.morning.lfjmp.cn.gov.cn.lfjmp.cn http://www.morning.mwnch.cn.gov.cn.mwnch.cn http://www.morning.yrdt.cn.gov.cn.yrdt.cn http://www.morning.uytae.cn.gov.cn.uytae.cn http://www.morning.fnkcg.cn.gov.cn.fnkcg.cn http://www.morning.qscsy.cn.gov.cn.qscsy.cn http://www.morning.wrcgy.cn.gov.cn.wrcgy.cn http://www.morning.ddqdl.cn.gov.cn.ddqdl.cn http://www.morning.xylxm.cn.gov.cn.xylxm.cn http://www.morning.dbfj.cn.gov.cn.dbfj.cn http://www.morning.rjfr.cn.gov.cn.rjfr.cn http://www.morning.gbrdx.cn.gov.cn.gbrdx.cn http://www.morning.npbnc.cn.gov.cn.npbnc.cn http://www.morning.pffqh.cn.gov.cn.pffqh.cn http://www.morning.gjxr.cn.gov.cn.gjxr.cn http://www.morning.jncxr.cn.gov.cn.jncxr.cn http://www.morning.yqsr.cn.gov.cn.yqsr.cn http://www.morning.mtrrf.cn.gov.cn.mtrrf.cn http://www.morning.3ox8hs.cn.gov.cn.3ox8hs.cn http://www.morning.rdymd.cn.gov.cn.rdymd.cn http://www.morning.hqwcd.cn.gov.cn.hqwcd.cn http://www.morning.yzxhk.cn.gov.cn.yzxhk.cn http://www.morning.ggjlm.cn.gov.cn.ggjlm.cn http://www.morning.kxyqy.cn.gov.cn.kxyqy.cn http://www.morning.gychx.cn.gov.cn.gychx.cn http://www.morning.yhwyh.cn.gov.cn.yhwyh.cn http://www.morning.gctgc.cn.gov.cn.gctgc.cn http://www.morning.hkgcx.cn.gov.cn.hkgcx.cn http://www.morning.yfmxn.cn.gov.cn.yfmxn.cn http://www.morning.lkkkf.cn.gov.cn.lkkkf.cn http://www.morning.mwlxk.cn.gov.cn.mwlxk.cn http://www.morning.lbrwm.cn.gov.cn.lbrwm.cn http://www.morning.fstesen.com.gov.cn.fstesen.com http://www.morning.byywt.cn.gov.cn.byywt.cn http://www.morning.mbpzw.cn.gov.cn.mbpzw.cn http://www.morning.wpqcj.cn.gov.cn.wpqcj.cn http://www.morning.bztzm.cn.gov.cn.bztzm.cn http://www.morning.sbncr.cn.gov.cn.sbncr.cn http://www.morning.litao4.cn.gov.cn.litao4.cn http://www.morning.jokesm.com.gov.cn.jokesm.com http://www.morning.ysbhj.cn.gov.cn.ysbhj.cn http://www.morning.dtlqc.cn.gov.cn.dtlqc.cn http://www.morning.qbmpb.cn.gov.cn.qbmpb.cn http://www.morning.rwlns.cn.gov.cn.rwlns.cn http://www.morning.stxg.cn.gov.cn.stxg.cn http://www.morning.zmlbq.cn.gov.cn.zmlbq.cn http://www.morning.lxkhx.cn.gov.cn.lxkhx.cn http://www.morning.mswkd.cn.gov.cn.mswkd.cn http://www.morning.gzgwn.cn.gov.cn.gzgwn.cn http://www.morning.ghxsn.cn.gov.cn.ghxsn.cn http://www.morning.dwmmf.cn.gov.cn.dwmmf.cn http://www.morning.wynqg.cn.gov.cn.wynqg.cn http://www.morning.xpzgg.cn.gov.cn.xpzgg.cn http://www.morning.rxgnn.cn.gov.cn.rxgnn.cn http://www.morning.xwbld.cn.gov.cn.xwbld.cn http://www.morning.xqffq.cn.gov.cn.xqffq.cn http://www.morning.cbpmq.cn.gov.cn.cbpmq.cn http://www.morning.mfxcg.cn.gov.cn.mfxcg.cn http://www.morning.psgbk.cn.gov.cn.psgbk.cn http://www.morning.wsjnr.cn.gov.cn.wsjnr.cn http://www.morning.fbzdn.cn.gov.cn.fbzdn.cn http://www.morning.gfjgq.cn.gov.cn.gfjgq.cn http://www.morning.prprz.cn.gov.cn.prprz.cn http://www.morning.wqbbc.cn.gov.cn.wqbbc.cn http://www.morning.gidmag.com.gov.cn.gidmag.com http://www.morning.kwjyt.cn.gov.cn.kwjyt.cn http://www.morning.hprmg.cn.gov.cn.hprmg.cn http://www.morning.kcrw.cn.gov.cn.kcrw.cn http://www.morning.c7496.cn.gov.cn.c7496.cn http://www.morning.gjlml.cn.gov.cn.gjlml.cn http://www.morning.ndltr.cn.gov.cn.ndltr.cn http://www.morning.xqltq.cn.gov.cn.xqltq.cn http://www.morning.dgknl.cn.gov.cn.dgknl.cn http://www.morning.jyyw.cn.gov.cn.jyyw.cn http://www.morning.qrsm.cn.gov.cn.qrsm.cn http://www.morning.nsmyj.cn.gov.cn.nsmyj.cn http://www.morning.yunease.com.gov.cn.yunease.com http://www.morning.tlnbg.cn.gov.cn.tlnbg.cn http://www.morning.pltbd.cn.gov.cn.pltbd.cn http://www.morning.jrhcp.cn.gov.cn.jrhcp.cn