Ansible中的ad-hoc,playbook,变量,加密

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

猜你喜欢

转载自blog.csdn.net/lb1331/article/details/111998681