1.ansible实现管理的方式:
Ad-Hoc--------------------利用ansible命令直接完成管理,主要用于临时命令使用场景
playbook-------------------ansible脚本,主要用于大型项目场景,需要前期的规划
2.运行临时命令(ad-hoc):
2-1:通过命令行的方式,使用临时命令可以快速测试和更改,无需编写playbook 简洁 高效
ansible命令执行过程:
1.加载自己的配置文件
2.加载对应的模块文件
3.通过ansible将模块生成对应的临时py文件,并将该文件传输到远程服务器的对应执行用户HOME/.ansible/temp/tmp/ansible-tmp-数字/xxx.py文件
4.给文件+x执行
5.执行并返回结果
6.删除临时文件,退出
2-2:临时命令使用的常见的模块:
文件模块:
-copy 将本地文件复制到受管主机
-file 设置文件的权限和其他属性
-lineinfile 确保特定行是否在文件中
-synchronize 使用rsync同步内容
系统模块:
-firewalld 使用firewalld管理任意端口和服务
用firewalld 管理任意端口和服务
-reboot 重启
-service 管理服务
-user 添加、删除和管理用户账户
Net Tools模块:
-get_url 通过http、https、或者ftp下载文件
nmcli 管理网络
-uri 与web服务交互
2-3 Ad-hoc常用参数:
3.Ansible中的playbook:
3-1.剧本(Playbook):是利用YAML标记语言编写的可重复执行的任务的列表。
3-2.yaml格式通常以 .yml为扩展名
ansible-playbook xxx.yml 运行playbook(要求环境中有inventory和ansible.cfg)注意:playbook里任务和任务间要有-,play和play间要有-
3-3.ansible-playbook默认输出不提供详细任务执行信息。
-v参数提供,共四个级别: -v(显示任务结果) -vv (显示任务结果和任务配置) -vvv (包含关于与受管主机的连接信息) -vvvv (增加连接插件相关的额外详细程度选项)(包括受管主机上用于执行脚本的用户及所 执行的脚本)
3-4.执行playbool前最好进行语法验证
ansible-playbook --syntax-check webserver.yml
有语法错误,会提示错误位置 ERROR!S
3-5.yaml对于缩进量没有严格要求,但是有两个基本原则:
1).处于同一层次结构中同一级别的数据元素必须具有相同的缩进量(play本身是一个键值对集合,同一play中的键应当使用相同的缩进量);在遇见: 之后 要有 “ ” 空格
2).如果项目属于其他项目的子项,其缩进量必须大于父项 格式如下:
3-6:playbook中常见的执行命令:
ansible-playbook xxx.yml ... ansible执行playbook
--check|-C ##检测
--syntax-check ##检测语法
--list-hosts ##列出hosts
--list-tags ##列出tag
--list-tasks ##列出task
--limit ##指定执行主机
-v -vv ##显示过程
4.在vimrc中编辑yaml的缩进格式:
5.ansible 中的变量:
5-1:作用:
将playbook中的某些值使用变量代替,从而简化playbook的编写
< 1.变量能够让playbook复用
< 2.可以给清单中的主机和主机组定义变量
< 3.可以使用事实和外部文件定义变量,也可以在命令行中
< 4.register关键字何以用于捕获命令输出
< 5.ansiblevault 的使用
< 6.ansible事实是从受管主机自动检测到的变量
5-2:变量命名
只能包含数字,下划线,字母
只能用下划线或字母开头
5-3:变量级别
全局: 从命令行或配置文件中设定的
paly: 在play和相关结构中设定的
主机: 由清单,事实收集或注册的任务
变量优先级设定:
狭窄范围优先于广域范围
5-4 :变量使用的常见方式:
5-4-1:在playbook开头的vars块中定义变量(常见方式)
5-4-2: 在ad—hoc命令行中直接加-e 参数定义变量:
ansible test -e “username=westos” ;
5-4-3:在ansible.cfg同级目录下建立变量文件:
调用变量时需注意要使用双引号:
如 : “ { { username } } ”
JINJA2模板的使用:
介绍:
Jinja2是Python下一个被广泛应用的模版引擎
他的设计思想来源于Django的模板引擎,
并扩展了其语法和一系列强大的功能。
其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能
使用示例:
---
- hosts: all
tasks:
- name: system info
template:
src: hostinfo.j2
dest: /tmp/hostinfo
注:导入其他的playbook或tasks:
- import_playbook: task.yml
6.ansible中的管理事实:
收集事实信息:
gather_acts ; 可以使用 gather_acts: no | false 关闭收集;
使用系统变量名,常见如下:
hostname: {{ ansible_facts['hostname'] }}
ip: {{ ansible_facts["eth0"]["ipv4"]["address"] }}
DNS: {{ ansible_facts['dns']['nameservers'][-1] }}
vda1: {{ ansible_facts['devices']['vda']['partitions']['vda1']['size'] }}
kernel: {{ ansible_facts['kernel'] }}
查看事实信息:ansible test(清单) -m setup | less
7.Ansible的加密控制 :
创建建立文件
1.
ansible-vault create westos
2.
vim westos-vault
lee
ansible-vault create --vault-password-file=westos-valut westos
#加密现有文件
ansible-vault encrypt test
#查看加密文件
ansible-vault view westos
ansible-vault view --vault-password-file=westos-valut westos
#编辑加密文件
ansible-vault edit westos1
ansible-vault edit --vault-password-file=westos-valut westos
##解密文件
ansible-vault decrypt westos ##文件永久解密
ansible-vault decrypt westos --output=linux ##文件解密保存为linux
##更改密码
ansible-vault rekey westos1
ansible-vault rekey westos1 --new-vault-password-file=key1
#playbook#
ansible-playbook apache_install.yml --ask-vault-pass