Ansible
Ansible 自动化平台可提供一个企业框架,用于大规模构建和运维 IT 自动化。通过可视化控制面板、基于角色的访问控制、分析等自动化工具和经认证可重复使用的内容,用户可以集中管理和控制自己的基础架构。讲人话就是批量在其它多台主机上执行命令,安装软件.
img
安装Ansible
代码语言:javascript复制> sudo dnf install ansible //Fedora
> sudo yum install ansible //RHEL
//CentOS
> sudo yum install epel-release
> sudo yum install ansible
注意这里安装的是
Ansible 2.3
关闭密钥检查
代码语言:javascript复制避免 Ansible 用于连接到主机的底层工具检查主机密钥,请将其设置为False
> vim /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False
Hello World
1.添加主机
代码语言:javascript复制在
/etc/ansible/hosts
文件添加下面的内容
> vim /etc/ansible/hosts
rumenzServer1 ansible_host=192.168.0.110 ansible_port=22 ansible_user=rumenz ansible_ssh_pass=123456
rumenzServer2 ansible_host=192.168.0.111 ansible_port=22 ansible_user=rumenz ansible_ssh_pass=123456
[hello]
rumenzServer1
rumenzServer2
[rumenz]
rumenzServer1
[rumenz123]
rumenzServer2
ansible_host
要连接的主机的名称,如果与您希望为其提供的别名不同。ansible_port
ssh 端口号,如果不是 22ansible_user
要使用的默认 ssh 用户名。ansible_ssh_pass
要使用的 ssh 密码rumenzServer1
,rumenzServer2
服务器名[hello]
,[rumenz]
,[rumenz123]
组名
2.批量ping
hello
就是上面配置文件配置的组名,代表要批量操作这个组的主机(rumenzServer1rumenzServer2
)
> ansible hello -m ping
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
192.168.0.110 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.168.0.111 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
3.批量执行Shell
rumenzServer1
,rumenzServer1
-m
模块的意思command
执行简单的远程 shell 命令,但不支持解析特殊符号< > | ; &
-a
后面跟上需要执行shell
命令
> ansible hello -m command -a "hostname"
192.168.0.110 | CHANGED | rc=0 >>
rumenz.com.1
192.168.0.111 | CHANGED | rc=0 >>
rumenz.com.2
批量打印服务器时间
rumenzServer1
,rumenzServer1
> ansible hello -m command -a "date"
192.168.0.110 | CHANGED | rc=0 >>
Tue Oct 19 17:15:51 CST 2021
192.168.0.111 | CHANGED | rc=0 >>
Tue Oct 19 17:15:50 CST 2021
4.批量创建目录
rumenzServer1
,rumenzServer1
shell
模块,支持解析特殊 shell 符号,但这样有潜在的 shell 注入风险
> ansible hello -m shell -a "mkdir /tmp/hello && cd /tmp/hello && pwd "
192.168.0.110 | CHANGED | rc=0 >>
/tmp/hello
192.168.0.111 | CHANGED | rc=0 >>
/tmp/hello
5.分组过多可以使用all
代码语言:javascript复制指定all会操作所有配置的主机
> ansible all -m command -a "date"
192.168.0.110 | CHANGED | rc=0 >>
Tue Oct 19 17:15:51 CST 2021
192.168.0.111 | CHANGED | rc=0 >>
Tue Oct 19 17:15:50 CST 2021
相关文章
linux如何设置无密码SSH登录