网站次年续费,建设网站比较好的公司吗,做网站设计的提成点是多少,网站专业制作公司1.playbook的核心组件
Hosts 执行的远程主机列表Tasks 任务集,由多个task的元素组成的列表实现,每个task是一个字典,一个完整的代码块功能需最 少元素需包括 name 和 task,一个name只能包括一个taskVariables 内置变量或自定义变量在playbook中调用Templates 模板#xff0c;…1.playbook的核心组件
Hosts 执行的远程主机列表Tasks 任务集,由多个task的元素组成的列表实现,每个task是一个字典,一个完整的代码块功能需最 少元素需包括 name 和 task,一个name只能包括一个taskVariables 内置变量或自定义变量在playbook中调用Templates 模板可替换模板文件中的变量并实现一些简单逻辑的文件Handlers 和 notify 结合使用由特定条件触发的操作满足条件方才执行否则不执行ags 标签 指定某条任务执行用于选择运行playbook中的部分代码。ansible具有幂等性因此 会自动跳过没有变化的部分即便如此有些代码为测试其确实没有发生变化的时间依然会非常地 长。此时如果确信其没有变化就可以通过tags跳过此些代码片断
1.1ansible命令执行过程
1. 加载自己的配置文件,默认/etc/ansible/ansible.cfg
2. 加载自己对应的模块文件如command
3. 通过ansible将模块或命令生成对应的临时py文件并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
4. 给文件x执行
5. 执行并返回结果
6. 删除临时py文件退出1.2 ansible常用工具
ansible-vault
ansible-galaxy
ansible-vault [create|decrypt|edit|encrypt|rekey|view]
ansible-vault encrypt hello.yml #加密
ansible-vault decrypt hello.yml #解密
ansible-vault view hello.yml #查看
ansible-vault edit hello.yml #编辑加密文件
ansible-vault rekey hello.yml #修改口令
ansible-vault create new.yml #创建新文件1.3host组件
1.3.1概念
aybook中的每一个play的目的都是为了让特定主机以某个指定的用户身份执行任务。hosts用
于指定要执行指定任务的主机须事先定义在主机清单中1.3.2 host文件的书写
[servera] #组名
172.17.8.1
172.17.8.2
172.17.8.3[serverb]
172.17.8.1
172.17.8.4
172.17.8.5[serverc]
servera:serverb #取servera和serverb的并集
#相当于
172.17.8.1
172.17.8.2
172.17.8.3
172.17.8.4
172.17.8.5[serverd]
servera:server #取servera和serverb组的交集
servera:!serverb #在serevra中但不在serverb中1.2 task列表和action组件
1.2.1 概念
play的主体部分是task listtask list中有一个或多个task,各个task 按次序逐个在hosts中指定的所有主
机上执行即在所有主机上完成第一个task后再开始第二个task,task的目的是使用指定的参数执行模块而在模块参数中可以使用变量。模块执行是幂等的这意味着多次执行是安全的因为其结果均一致.每个task都应该有其name用于playbook的执行结果输出建议其内容能清晰地描述任务执行步骤。如果未提供name则action的结果将用于输出。1.2.2 task格式
tasks:- name: install httpdyum: namehttpd#或者
tasks:- name: install httpdyum: name: httpd2.编写playbook文件
2.1playbook的命令
--syntax-check #语法检查,可缩写成--syntax, 相当于bash -n
-C --check #模拟执行,只检测可能会发生的改变但不真正执行操作,dry run
--list-hosts #列出运行任务的主机
--list-tags #列出tag
--list-tasks #列出task
--limit 主机列表 #只针对主机列表中的特定主机执行
-i INVENTORY #指定主机清单文件,通常一个项对应一个主机清单文件
--start-at-task START_AT_TASK #从指定task开始执行,而非从头开始,START_AT_TASK为任务的
name
-v -vv -vvv #显示过程2.2setup变量的调用
查看远程主机默认的setup变量
ansible 172.17.8.11 -m setup
#常用的setup变量
ansible_facts: {ansible_all_ipv4_addresses: [172.17.8.11],ansible_default_ipv4: {address: 172.17.8.11, alias: eth0, broadcast: 172.17.8.255, gateway: 172.17.8.2, interface: eth0, macaddress: 00:0c:29:87:53:a2, mtu: 1500, netmask: 255.255.255.0, network: 172.17.8.0, type: ether#调用setup中的变量格式{{ 变量名[变量名下的分支] }}- hosts: hosttasks:- name: show host ipfile: path: /data/{{ ansible_default_ipv4[address] }}_{{ ansible_date_time[date] }}.log state: touch2.3文件中定义变量
#调用文件中的变量
vim var1.yml
---
- hosts: hostvars: #定义变量user: weng #变量名定义变量的值group: shiqiangtasks:- name: print debug debug:msg: my name is {{ user }} ,my group is {{ group }} #{{ $name }}引用变量 #文件中的变量相互调用
---- hosts: hostremote_user: rootvars:collect_info: /data/test/{{ansible_default_ipv4[address]}}/tasks:- name: create IP directoryfile: name{{collect_info}} statedirectory#使用变量文件vim vars.yml
---
# variables file
package_name: mariadb-server
service_name: mariadb
vim var5.yml
---
#install package and start service
- hosts: dbsrvs
remote_user: root
vars_files:- vars.yml
tasks:- name: install packageyum: name{{ package_name }}tags: install- name: start serviceservice: name{{ service_name }} statestarted enabledyes3、实战案例
3.1 基于角色安装mysql5.6
[rootdns-master ansible]# tree
.
├── mysql_role.yml
├── nginx
└── roles └── mysql├── files #存放数据库的配置文件和安装包│ ├── my.cnf #配置文件│ └── mysql-8.0.25-el7-x86_64.tar.gz #mysql的安装包├── tasks #任务列表│ ├── group.yml │ ├── init_data.yml│ ├── install.yml│ ├── linksoft.yml│ ├── main.yml #任务列表│ ├── mysql.conf.yml│ ├── path.yml│ ├── service.yml│ ├── start_file.yml│ ├── unarchive.yml│ └── user.yml└── vars└── main.yml #定义变量参数[rootdns-master tasks]# cat main.yml
- include: group.yml
- include: user.yml
- include: unarchive.yml
- include: linksoft.yml
- include: mysql.conf.yml
- include: init_data.yml
- include: path.yml
- include: start_file.yml
- include: service.yml[rootdns-master tasks]# cat group.yml
- name: create group mysqlgroup:name: mysqlgid: 306[rootdns-master tasks]# cat user.yml
- name: create mysql useruser:name: mysqluid: 306group: mysql[rootdns-master tasks]# cat unarchive.yml
- name: copy tar to remote host and file modeunarchive:src: /data/ansible/roles/mysql/files/{{ mysql_file }}dest: /usr/local/srcgroup: mysqlowner: mysql[rootdns-master tasks]# cat linksoft.yml
- name: create linkfile /usr/local/src/mysqlfile:src: /usr/local/src/mysql-8.0.25-el7-x86_64dest: /usr/local/src/mysqlstate: linkgroup: mysqlowner: mysql[rootdns-master tasks]# cat mysql.conf.yml
- name: create mysql configcopy:src: /data/ansible/roles/mysql/files/my.cnfdest: /etc/my.cnf[rootdns-master tasks]# cat init_data.yml
- name: data dirshell: /usr/local/src/mysql/bin/mysqld --initialize-insecure --usermysql --datadir/app/mysql --basedir/usr/local/src/mysql[rootdns-master tasks]# cat path.yml
- name: PATHcopy:content: PATH{{dest_file}}/mysql/bin:$PATHdest: /etc/profile.d/mysql.sh[rootdns-master tasks]# cat start_file.yml
- name: create start mysql fileshell: /bin/cp {{dest_file}}/mysql/support-files/mysql.server /etc/init.d/mysqld;sed -Ei s#^(basedir)$#\1\/usr\/local\/src\/mysql# /etc/init.d/mysqld;sed -Ei s#^(datadir)$#\1\/app\/mysql# /etc/init.d/mysqld[rootdns-master tasks]# cat service.yml
- name: start mysqlshell: chkconfig --add mysqld;/etc/init.d/mysqld start关于ansible常用的模块功能之前做过总结这里就不做总结了后面还会继续改进有的案例和内容还没总结好。先凑合这看