版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
一.ansible介绍
简介:
- 开源部署工具
- 开发语言:Python
- 特点:SSH协议通讯,全平台,无需编译,模块化部署管理
- 作用:推送Playbook进行远程节点快速部署
优点:
- 轻量级无客户端(Agentless)
- 使用Playbook作为核心配置结构,统一的脚本格式批量化部署
- 完善的模块化扩展,支持目前主流的开发场景
- 强大的稳定性和兼容性
二.安装ansible
1.安装ansible
[root@server1 ~]# ls
ansible-2.7.8-1.el7.noarch.rpm ##ansible安装包,下面的是安装需要解决的依赖性
libtomcrypt-1.17-25.el7.x86_64.rpm
libtommath-0.42.0-5.el7.x86_64.rpm
python2-crypto-2.6.1-13.el7.x86_64.rpm
python2-jmespath-0.9.0-1.el7.noarch.rpm
python-httplib2-0.9.2-0.1.el7.noarch.rpm
python-keyczar-0.71c-2.el7.noarch.rpm
python-paramiko-2.1.1-0.9.el7.noarch.rpm
sshpass-1.06-1.el7.x86_64.rpm
[root@server1 ~]# yum install -y *
2.查看版本
[root@server1 ~]# ansible --version
3.创建用户develops用来管理ansible
[root@server1 ~]# cd /etc/ansible/
[root@server1 ansible]# ls
ansible.cfg hosts roles
[root@server1 ansible]# useradd devlops
[root@server1 ansible]# su - devlops
[devlops@server1 ~]$ ls
[devlops@server1 ~]$ mkdir ansible
[devlops@server1 ~]$ ll /etc/ansible/ansible.cfg
-rw-r--r-- 1 root root 20277 Feb 22 07:04 /etc/ansible/ansible.cfg ##全局配置
[devlops@server1 ~]$ cd ansible/
[devlops@server1 ansible]$ ls
[devlops@server1 ansible]$ pwd
/home/devlops/ansible
[devlops@server1 ansible]$ vim ansible.cfg
[devlops@server1 ansible]$ cat ansible.cfg
[defaults]
inventory = ./inventory
[devlops@server1 ansible]$ cat ansible.cfg
[defaults]
inventory = ./inventory ##读取当前目录下的inventory
[devlops@server1 ansible]$ vim inventory ##主机host清单
[devlops@server1 ansible]$ cat inventory
[test]
172.25.31.2
[prod]
172.25.31.3
4.配置免密
[devlops@server1 ansible]$ ssh-keygen
[devlops@server1 ansible]$ ssh-copy-id 172.25.31.2
[devlops@server1 ansible]$ ssh-copy-id 172.25.31.3
测试:
最好配置解析
[devlops@server1 ansible]$ ssh server2
[devlops@server1 ansible]$ ssh server3
5.为client:serve2、server3创建用户devlops
server2:
[root@server2 ~]# useradd devlops
[root@server2 ~]# passwd devlops
Changing password for user devlops.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
server3:
[root@server3 ~]# useradd devlops
[root@server3 ~]# passwd devlops
Changing password for user devlops.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
6.测试
[devlops@server1 ansible]$ ansible all -m ping ##-m指定模块
[devlops@server1 ansible]$ ansible all -m ping -u devlops
[devlops@server1 ansible]$ ansible all -m ping -u root #-u切换用户,默认是root。因为免密是dovelops操作的,所以root不能免密
ansible常用参数及命令:
参数 | 功能 |
---|---|
-m | 要执行的模块,默认为command |
-a | 指定模块的参数 |
-u | ssh连接的用户名,默认用root,ansible.cfg中可以配置 |
-b,–become | 变成那个用户身份,不提示密码 |
-k | 提示输入ssh登录密码,当使用密码验证的时候用 |
-s | sudo运行 |
-U | sudo到哪个用户,默认为root |
-K | 提示输入sudo密码,当不是NOPASSWD模式时使用 |
-C | 只是测试一下会改变什么内容,不会真正去执行 |
-c | 连接类型(default=smart) |
-f | fork多少进程并发处理,默认为5个 |
-i | 指定hosts文件路径,默认default=/etc/ansible/hosts |
-I | 指定pattern,对已匹配的主机中再过滤一次 |
-list-host | 只打印有哪些主机会执行这个命令,不会实际执行 |
-M | 要执行的模块路径,默认为/usr/share/ansible |
-o | 压缩输出,摘要输出 |
–private-key | 私钥路径 |
-T | ssh连接超时时间,默认是10秒 |
-t | 日志输出到该目录,日志文件名以主机命名 |
-v | 显示详细日志 |