Ansible批量操作服务器主机入门

Ansible

Ansible 自动化平台可提供一个企业框架,用于大规模构建和运维 IT 自动化。通过可视化控制面板、基于角色的访问控制、分析等自动化工具和经认证可重复使用的内容,用户可以集中管理和控制自己的基础架构。
讲人话就是批量在其它多台主机上执行命令,安装软件.

图片alt

安装Ansible

  1. > sudo dnf install ansible //Fedora
  2. > sudo yum install ansible //RHEL
  3. //CentOS
  4. > sudo yum install epel-release
  5. > sudo yum install ansible

注意这里安装的是Ansible 2.3

关闭密钥检查

避免 Ansible 用于连接到主机的底层工具检查主机密钥,请将其设置为False

  1. vim /etc/ansible/ansible.cfg
  2. [defaults]
  3. host_key_checking = False

Hello World

1.添加主机

/etc/ansible/hosts文件添加下面的内容

  1. > vim /etc/ansible/hosts
  2. rumenzServer1 ansible_host=192.168.0.110 ansible_port=22 ansible_user=rumenz ansible_ssh_pass=123456
  3. rumenzServer2 ansible_host=192.168.0.111 ansible_port=22 ansible_user=rumenz ansible_ssh_pass=123456
  4. [hello]
  5. rumenzServer1
  6. rumenzServer2
  7. [rumenz]
  8. rumenzServer1
  9. [rumenz123]
  10. rumenzServer2
  • ansible_host 要连接的主机的名称,如果与您希望为其提供的别名不同。
  • ansible_port ssh 端口号,如果不是 22
  • ansible_user 要使用的默认 ssh 用户名。
  • ansible_ssh_pass 要使用的 ssh 密码
  • rumenzServer1,rumenzServer2服务器名
  • [hello],[rumenz],[rumenz123]组名

2.批量pingrumenzServer1,rumenzServer1

  • hello就是上面配置文件配置的组名,代表要批量操作这个组的主机(rumenzServer1
    rumenzServer2)
  1. > ansible hello -m ping
  2. [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
  3. 192.168.0.110 | SUCCESS => {
  4. "ansible_facts": {
  5. "discovered_interpreter_python": "/usr/bin/python"
  6. },
  7. "changed": false,
  8. "ping": "pong"
  9. }
  10. 192.168.0.111 | SUCCESS => {
  11. "ansible_facts": {
  12. "discovered_interpreter_python": "/usr/bin/python"
  13. },
  14. "changed": false,
  15. "ping": "pong"
  16. }

3.批量执行ShellrumenzServer1,rumenzServer1

  • -m模块的意思
  • command 执行简单的远程 shell 命令,但不支持解析特殊符号< > | ; &
  • -a后面跟上需要执行shell命令
  1. > ansible hello -m command -a "hostname"
  2. 192.168.0.110 | CHANGED | rc=0 >>
  3. rumenz.com.1
  4. 192.168.0.111 | CHANGED | rc=0 >>
  5. rumenz.com.2

批量打印服务器时间rumenzServer1,rumenzServer1

  1. > ansible hello -m command -a "date"
  2. 192.168.0.110 | CHANGED | rc=0 >>
  3. Tue Oct 19 17:15:51 CST 2021
  4. 192.168.0.111 | CHANGED | rc=0 >>
  5. Tue Oct 19 17:15:50 CST 2021

4.批量创建目录rumenzServer1,rumenzServer1

  • shell模块,支持解析特殊 shell 符号,但这样有潜在的 shell 注入风险
  1. > ansible hello -m shell -a "mkdir /tmp/hello && cd /tmp/hello && pwd "
  2. 192.168.0.110 | CHANGED | rc=0 >>
  3. /tmp/hello
  4. 192.168.0.111 | CHANGED | rc=0 >>
  5. /tmp/hello

5.分组过多可以使用all

指定all会操作所有配置的主机

  1. > ansible all -m command -a "date"
  2. 192.168.0.110 | CHANGED | rc=0 >>
  3. Tue Oct 19 17:15:51 CST 2021
  4. 192.168.0.111 | CHANGED | rc=0 >>
  5. Tue Oct 19 17:15:50 CST 2021

返回笔记列表
入门小站