其实除了我们常用的ansible、ansible-playbook等命令外,还有其他能够提升我们工作效率的系统命令
- ansible-galaxy
ansible-galaxy
连接https://galaxy.ansible.com/ 下载相应的roles
https://galaxy.ansible.com/ 这上面有很多的ansible爱好者和好心人上传的优秀的roles,我们只需要下载就能使用
列出所有已安装的galaxy
ansible-galaxy list
安装galaxy
ansible-galaxy install geerlingguy.nfs
删除galaxy
ansible-galaxy remove geerlingguy.nfs
显示为:
[root@ceshi ~]# ansible-galaxy install geerlingguy.nfs
- downloading role 'nfs', owned by geerlingguy
- downloading role from https://github.com/geerlingguy/ansible-role-nfs/archive/1.5.0.tar.gz
- extracting geerlingguy.nfs to /root/.ansible/roles/geerlingguy.nfs ####下载到本地的位置
- geerlingguy.nfs (1.5.0) was installed successfully
[root@ceshi ~]# tree .ansible/roles/
.ansible/roles/
└── geerlingguy.nfs
├── defaults
│ └── main.yml
├── handlers
│ └── main.yml
├── LICENSE
├── meta
│ └── main.yml
├── molecule
│ └── default
│ ├── molecule.yml
│ ├── playbook.yml
│ └── tests
│ └── test_default.py
├── README.md
├── tasks
│ ├── main.yml
│ ├── setup-Debian.yml
│ └── setup-RedHat.yml
├── templates
│ └── exports.j2
└── vars
├── Debian.yml
├── Fedora.yml
├── RedHat-7.yml
└── RedHat.yml
10 directories, 16 files
[root@ceshi ~]# ansible-galaxy list geerlingguy.nfs
- geerlingguy.nfs, 1.5.0 ###具体的版本信息
#####所以我们如果想要快速的写一个完成任务的roles,可以选择先ansible-galaxy下载一个roles,然后在下载的基础上面进行我们所需要的修改
- ansible-pull
ansible-pull
远端拉取命令或者剧本,效率无限提升,对运维要求较高
该指令的使用涉及Ansible的另一种工作模式:pull模式(Ansible默认使用push模式)。这和通常使用的push模式工作机理刚好相反,其适用于以下场景:
1、你有数量巨大的机器需要配置,即使使用高并发线程依旧要花费很多时间;2、你要在刚启动的、没有网络连接的主机上运行Anisble
Usage: ansible-pull -U <repository> [options] [<playbook.yml>]
例: */20 * * * * root /usr/local/bin/ansible-pull -o -C 2.1.0 -d /srv/www/king-gw/ -i /etc/ansible/hosts -U git:// git.kingifa.com/king-gw-ansiblepull >> /var/log/ansible-pull.log 2>&1
它是通过通过ansible-pull结合Git和crontab一并实现,其原理如下:通过crontab定期拉取指定的Git版本到本地,并以指定模式自动运行预先制订好的指令
注:ansible-pull通常在配置大批量机器的场景下会使用,灵活性稍有欠缺,但效率几乎可以无限提升,对运维人员的技术水平和前瞻性规划有较高要求
我对着命令了解的也不是很多,基本很少用过,后续继续更新
- Ansible-vault
Ansible-vault
功能:管理加密解密yml文件
Usage: ansible-vault [create|decrypt|edit|encrypt|encrypt_string|rekey|view] [options] [vaultfile.yml]
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 hello.yml 创建新的文件
例:我们随便写一个playbook
[root@ceshi ansible]# ansible-vault encrypt hello.yml
New Vault password:
Confirm New Vault password:
Encryption successful
[root@ceshi ansible]# cat hello.yml ###一般的查看命令是看不到加密后的内容的
$ANSIBLE_VAULT;1.1;AES256
63643463336562663464373064643362346362303764356465323862356131393865303664323237
3535626663653165616137393439623337643130373835650a623135653364653639316632363761
65333737373265303439336330333366306533373039323164373262326263336333336265646631
6235386230626564310a623161313961346135343439313535666564323438653263656635336431
65316534396633623163393835643761303234383932326338653932363534613139633065316538
30376463343932346235386533326230316266386235306333316132363664646432326537393136
30356439363664326432653063356163323566313339306531313232303233393332643836316162
61383733653666386566613861376633353164393533663132646338313136393434633563623334
3233
[root@ceshi ansible]# ansible-playbook hello.yml ###加密后的playbook我们是无法运行的
ERROR! Attempting to decrypt but no vault secrets found
[root@ceshi ansible]# ansible-vault view hello.yml ###查看加密后的playbook
Vault password:
---
- hosts: all
remote_user: root
tasks:
- name: hello
command: hostname
- Ansible-console
ansible-console:2.0+新增,可交互执行命令,支持tab
root@all (3)[f:5]$
执行用户@当前操作的主机组(当前组的主机数量)[f:并发数]$
设置并发数:forks n 例如:forks 10
切换组:cd 主机组 例如:cd test
列出当前组主机列表:list
列出所有的内置命令:?或help
示例:
root@all (3)[f:5]$ list
root@all (3)[f:5]$ cd dbserver
root@dbserver (2)[f:5]$ list
root@dbserver (2)[f:5]$ yum name=httpd state=present
root@dbserver (2)[f:5]$ service name=httpd state=started