Ansible概述
- Ansible可以同时管理Redhat系的Linux,Debian系的Linux,以及Windows主机。管理节点只在执行脚本时与远程主机连接,没有特别的同步机制,所以断电等异常一般不会影响ansbile。
- ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
1、连接插件connection plugins:负责和被监控端实现通信;
2、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
3、各种模块核心模块、command模块、自定义模块;
4、借助于插件完成记录日志邮件等功能;
5、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。 - ansible的架构:连接其他主机默认使用ssh协议
管理端:192.168.223.10
被管理端:192.168.223.20
被管理端:192.168.223.30
1、关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
2、安装相关软件
[root@localhost ~]# yum -y install epel-release.noarch
[root@localhost ~]# yum install -y ansible
[root@localhost ~]# yum install -y tree
[root@localhost ~]# tree /etc/ansible/
/etc/ansible/
├── ansible.cfg
├── hosts
└── roles
3、修改主机清单
[root@localhost ~]# vim /etc/ansible/hosts #配置主机清单
#以下内容为添加内容,不是修改内容
[webservers]
192.168.223.20 #被监控端1的IP
[mysql]
192.168.223.30 #被监控端2的IP
4、创建密钥对,进行远程连接
#生成密钥对
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #回车
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): #输入密码788788
Enter same passphrase again: #确认密码788788
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:WKpIMqbJgc2JyTz2C351d7bzbDJ83wUsyf1oKXaq82c root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| . |
|+= . + . + |
|*B= o S + + |
|==+. o . . o . = |
|oo..o . . + + = o|
|. ... .B.BE o|
| ... .+X=...|
+----[SHA256]-----+
[root@localhost ~]# ls -al
drwx------. 2 root root 57 4月 8 10:31 .ssh
[root@localhost ~]# cd .ssh/
[root@localhost .ssh]# ls
id_rsa id_rsa.pub #id_rsa:私钥;id_rsa.pub:公钥
5、将公钥上传到被监控端
[root@localhost .ssh]# ssh-copy-id root@192.168.223.20
[root@localhost .ssh]# ssh-copy-id root@192.168.223.30
#在监控端登录被监控端查看日期
[root@ansible ~]# ansible 192.168.223.20 -m command -a 'date'
Enter passphrase for key '/root/.ssh/id_rsa': #输入之前设置的密码:788788
192.168.223.20 | CHANGED | rc=0 >>
2021年 04月 08日 星期四 12:12:19 CST
[root@ansible ~]# ansible mysql -m command -a 'date' #当然也可以用别名进程查看
Enter passphrase for key '/root/.ssh/id_rsa':
192.168.223.30 | CHANGED | rc=0 >>
2021年 04月 08日 星期四 12:14:22 CST
-m:指定模块
-a:指定参数
6、设置ssh免交互登录
[root@ansible ~]# ssh-agent bash
[root@ansible ~]# ssh-add
Enter passphrase for /root/.ssh/id_rsa:
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
7、测试
[root@ansible ~]# ansible all -m ping ##-m指定模块
参数 | 功能 |
---|---|
-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 | 显示详细日志 |
THE END
暂无评论内容