ansible基础用法

一、环境介绍

操作系统主机IP角色主机名
centos7.5192.168.1.18ansible-servernode2
centos7.5192.168.1.19ansible-clientnode3

二、安装epel yum源

1.下载epel yum源

yum -y install epel-release
[root@node2 ~]# yum list |grep ^ansible
ansible.noarch                              2.9.16-1.el7               epel     
ansible-doc.noarch                          2.9.16-1.el7               epel     
ansible-inventory-grapher.noarch            2.4.4-1.el7                epel     
ansible-lint.noarch                         3.5.1-1.el7                epel     
ansible-openstack-modules.noarch            0-20140902git79d751a.el7   epel     
ansible-python3.noarch                      2.9.16-1.el7               epel     
ansible-review.noarch                       0.13.4-1.el7               epel

2.安装ansble

[root@node2 ~]# yum -y install ansible

3.查看版本

[root@node2 ~]# rpm -qa |grep ansible
ansible-2.9.27-1.el7.noarch

4.配置密钥对通信

ansible默认用ssh方式通信,这里服务端与客户端之间使用密钥对通信

4.1.在服务端创建密钥(node2)
[root@node2 ~]# ssh-keygen  -t rsa

#讲公钥传递到被管理机上
[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.1.19
4.2.在客户端查看密钥
[root@node3 ~]# cat .ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmPE7vBP4hA249aZ0FxQdDnqRAzIbnAO7ZEfS44KNoaiFTD9GSpFGXu53rYJteJ8OKe5EHKx47SoYtgRKK3fdV5u9qujSW4cn
xCalqEd7UXCcKZgq3Qqz+XT3/tLDF5c7R20dxKrAs6V381kZ+kbFhdZyHPcuHBTV4k0UjHQ0s1zBRWGzfLMvBNmswj8mVOMw2QH95DJUrW8ukoeuPqPqEc7uXnQKkRkLArwceYuw21jFXb5Cl2gsSfKndplu7Xx9NUhk+jiofZ9A0BLGhr7jUEs5hDqpea199XrfTG1nRcTXrbIG/+malt+bKz5hFDmHHYtzPiIr3JO8TsJ1aj/xl root@node2

4.3.连接测试

连接成功,没有要求连接时输入密码。

[root@node2 ~]# ssh 192.168.1.19
Last login: Sat Jun 29 17:42:11 2024 from 192.168.1.18
[root@node3 ~]# 

四、基本配置

1.添加被管理机

1.1 语法1:

添加多个并且IP不连续的主机组

[root@node2 ansible]# cat hosts 
[web]
192.168.1.19
192.168.1.20

1.2 语法2:

添加多个并且IP连续的主机组. 这里backend主机组的范围是192.168.1.30-35

[root@node2 ansible]# cat hosts 
[backend]
192.168.1.[30:35]

2.基础语法

2.1 ansible

ansible是执行命令的主要命令

ansible 主机组 -m 指定模块 -a 参数

2.2 ansible-doc

ansible-doc是查看模块帮助的主要命令。-l列出所有模块

[root@node2 ~]# ansible-doc -l |wc -l
3387

查看某个模块说明

#查看ping模块的详细说明
[root@node2 ~]# ansible-doc ping

2.3 查看所有主机

[root@node2 ansible]# ansible all --list
  hosts (8):
    192.168.1.19
    192.168.1.20
    192.168.1.30
    192.168.1.31
    192.168.1.32
    192.168.1.33
    192.168.1.34
    192.168.1.35

2.4 查看某个主机组的主机

[root@node2 ansible]# ansible backend --list
  hosts (6):
    192.168.1.30
    192.168.1.31
    192.168.1.32
    192.168.1.33
    192.168.1.34
    192.168.1.35

3.测试通信

[root@node2 ~]# ansible web -m ping
192.168.1.107 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

说明已经通信成功

五、常用模块

1.command模块

默认模块,在远程主机上执行命令,也即使说不使用-m指定模块 默认使用的就是command模块

[root@node2 ~]# ansible web -a  'ls'
192.168.1.107 | CHANGED | rc=0 >>
anaconda-ks.cfg
initial-setup-ks.cfg

command模块是有一些局限性的,有些shell命令是执行不了的

2.shell模块

shell模块比command对shell命令的支持会稍微好一些。可以讲默认模块改为shell

[root@node2 ~]# vim /etc/ansible/ansible.cfg 
module_name = shell

批量修改root登录密码

[root@node2 ~]# ansible web -a "echo "123456" |passwd --stdin root"

3.script脚本模块

功能:在远程主机上运行服务器上的脚本,运维人员无需手动将脚本复制到客户端,ansible会自动将脚本推送到客户端,执行完后会自定删除客户端的脚本。

3.1 创建测试脚本

在ansiable端编写测试脚本,内容如下

[root@node2 ~]# cat test.sh 
awk -F: '{if(NR <=10){print $1}}' /etc/passwd

3.2 执行脚本

[root@node2 ~]# ansible web -m script -a '/root/test.sh'
192.168.1.19 | CHANGED => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 192.168.1.19 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to 192.168.1.19 closed."
    ], 
    "stdout": "root\r\nbin\r\ndaemon\r\nadm\r\nlp\r\nsync\r\nshutdown\r\nhalt\r\nmail\r\noperator\r\n", 
    "stdout_lines": [
        "root", 
        "bin", 
        "daemon", 
        "adm", 
        "lp", 
        "sync", 
        "shutdown", 
        "halt", 
        "mail", 
        "operator"
    ]
}

4.copy模块

将服务端的文件下发到客户端

ansible web -m copy -a 'src=/root/test.sh dest=/root'
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值