大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步!
ansible-playbook
palybook 是由一个或多个paly组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible 中的 task 定义好的角色。从根本上来讲,所谓 task 无非是调用 ansible 的一个 module。将多个 play组织在一个 playbook 中,即可以让它们联同起来按事先编排好的机制同唱一台大戏。
一个playbook由以下几个部分组成:
Inventory
Modules
Ad Hoc Commands
Playbooks
tasks:即调用模块完成的操作
variables:变量
templates:模板
handlers:触发器,由某子任务触发执行操作
roles:角色
写一个简单的剧本
--- #固定格式,可以不写
- hosts: test #表示你要操作的主机组,注意空格
remote_user: root #以root身份远程操作
tasks:
- name: test #说明
command: hostname #要执行的命令
执行:
[root@master ansible]# vim test.yml
[root@master ansible]# ansible-playbook test.yml
PLAY [test] ***************************************************************************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [192.168.1.1]
TASK [test] ***************************************************************************************************************************************************************
changed: [192.168.1.1]
PLAY RECAP ****************************************************************************************************************************************************************
139.9.198.12 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansible-vault
加密重要信息
加密剧本
需重复输入两次密码
[root@master ansible]# ansible-vault encrypt test.yml
New Vault password:
Confirm New Vault password:
Encryption successful
查看剧本时,也必须使用ansible-vault指令,否则看到的是加密内容,如
[root@master ansible]# cat test.yml
$ANSIBLE_VAULT;1.1;AES256
61373337616563376334636235306530356635343530653862376533636331333161313661643430
3532313561363438386233646366643266323365633632330a393433383866306631643461653233
33616333316664383463353638373131363431373630666161363335623664653136643264323565
6630373939336262390a316562626665336534353466656133613133373262646662393764373965
61326161336335616364373034383133623763313465633136623861353536643438343537626232
31646161633932346466653663616330633438343637613231643234316530386435633231356332
34326639383934613062373463356632353866623165306230343833623863313634323932623763
37326434616332643931653939666361626537346566666633633536336537336231626237376134
3239
解密剧本
[root@master ansible]# ansible-vault decrypt test.yml
Vault password:
Decryption successful
[root@master ansible]# cat test.yml
---
- hosts: test
remote_user: root
tasks:
- name: test
command: hostname
查看剧本
[root@master ansible]# ansible-vault view test.yml
Vault password:
---
- hosts: test
remote_user: root
tasks:
- name: test
command: hostname
编辑剧本
[root@master ansible]# ansible-vault edit test.yml
Vault password:
---
- hosts: test
remote_user: root
tasks:
- name: test
command: hostname
~
修改口令
需先输入旧密码在输入两次新密码
[root@master ansible]# ansible-vault rekey test.yml
Vault password:
New Vault password:
Confirm New Vault password:
Rekey successful
创建新文件
[root@master ansible]# ansible-vault create test2.yml
New Vault password:
Confirm New Vault password:
ansible-console
交互式工具!
含义:
root:执行用户
all: 主机清单
(1):代表主机个数
[f:5]: fork=5 5并发请求
修改为10个并发
root@all (1)[f:5]$ forks 10
root@all (1)[f:10]$
输入 ?或者help 可以查看提示,即模块名
console操作
执行查看日期命令
root@all (1)[f:5]$ command date
139.9.198.12 | CHANGED | rc=0 >>
Mon May 29 17:39:09 CST 2023
修改目标主机时间
如果主机有多个,修改某个主机信息,需使用cd切换
root@all (1)[f:5]$ cd 192.168.1.1
root@139.9.198.12 (1)[f:5]$ date -s "2023-05-29 17:40:00"