一 Ansible 七大武器
1ansible 命令
2ansible-doc
3ansible-console
4ansible-galaxy
5ansible-playbook
6ansible-vauil
7ansible-pull | push
二 JSON特性
概念:是JavaScript对象表示法,基于文本独立于语言的轻量级数据交换格式
分隔符:’ () [] {} : ,
1 JSON特性:
1纯文本
2自我描述性(人类可读)
3层级架构
4通过JavaScrip解析
2 语法规则:
数据在名称/值对中
中括号保存数组
逗号分隔
大括号保存对象
3 JSON书写格式
{“诗仙”:"李白"}
Key:value
Key:[a,b,c]
[a,key:value,c]
[a,b,c,[1,2,3]]
K1:k2:v2
数组-列表(小名)
三 YAML
1概念
可读性高,用来表示数据序列的格式
2基础语法
数组用-表示
键值对:表示 key: value
固定缩进
#注释
3键值对表示方法
"诗仙": "李白"
"诗仙":
"李白"
4数组
诗人:
-李白: 爱好:酒
-杜甫
-白居易
-王维
四 JINJa2
1 基本语法
模板表达式{{}}
控制语句
循环判断
五 Playbook
1概念:配置,部署,管理托管主机的剧本
2执行简单任务
反复使用编写的代码
3语法基础
YAML
#
缩进
Play
Hosts variables roles tasks
—开始
4构成:
Hosts
Vars
Tasks
Handers
5执行结果
红色:失败
绿色:成功
***系统状态发生改变
6 tasks 命令的集合
Hosts 主机的集合
定义要执行任务的主机
六 Playbook 书写:
Vim ping.yml
-host: web
Remote_user: root
Tasks:
- ping:
-name:
user:
Name:z3
Group:users
-name:change passwd
Shell: echo 123 | passwd --stdin z3
Ansible-playbook ping.yml
一 变量
1 添加用户
给web主机添加用户14 ,设置默认密码123
-hosts: web
Remote_user: root
Vars:
Username:14
Tasks:
-name: create user “{{username}}”
User:
Name: ”{{username}}”
-shell: echo 123 | passwd --stdin “{{username}}”
2 设置密码解决明文问题
User模块的password不能设置密码
测试发现.Password是吧字符串写入shadow,是没有加密的
Linux的密码是需要加密的,所以不能使用
解决方案:
变量过滤器
{{‘urpassword’|password_hash(‘sha512’)}}
16619822690
3 设置默认密码123qqq…A
-hosts: web
Remote_user: root
Vars:
Username:14
Tasks:
-name: create user “{{username}}”
User:
Name: ”{{username}}”
Password={{‘123qqq…A’|password_hash(‘sha512’)}}
二 传递参数:
-e 参数
参数格式必须是:Json yaml
Yaml 可以使用参数文件
Args.yml
Username:
Nb
-e @args.yml
Ansible-playbook user.yml -e ‘{“username”:plj}’
Ansible-playbook user.yml -e @args.yaml
Cat args.yaml
三 error
Ansible-playbook对错误处理
默认情况判断
四 tags 给制定的任务定义一个调用标识
Name: NAME
Module: arguements
五 When / register
满足条件后触发某一动作
Uptime | awk ‘{printf(%.2f),$(NF-2))0}’
Printf “abc”
-shell: uptime | awk ‘{print(“%.2f”,$(NF-2))}’
Register: result
-service:
Name: httpd
State: stopped
When: result.stdout| float > 0.7