linux运维ansible入门

bilibili视频地址

ansible入门

介绍

无主无从, 开箱即用, 用完就走, 只要能用ssh即可使用ansible

总结 分成两部分

  • 主机
  • ansible
    - 模块
    - 主机清单
    - ssh
    - playbook 完成复杂部署

使用yum安装

ansible只要在controller控制节点上安装即可, 其它的节点可以通过ssh协议进行连接操作

安装
yum -y install epel-release
yum -y install ansible

验证
rpm -qa | grep ansible
ansible-2.8.1 

文章目录

  • ansible入门
    • 介绍
    • 使用yum安装
    • 主机清单 /etc/ansible/hosts
    • 应用案例
      • 使用ansible的ping模块实现测试主机互通性
        • 思考
      • 使用ansible的cron模块实现配置多主机的时间同步
      • 使用ansible的copy模块实现多主机配置文件的同步

主机清单 /etc/ansible/hosts

  1. 从主机清单中读取主机列表进行配置
  2. 实现主机分组

主机清单文件

/etc/ansible/hosts
  1. 直接在主机清单文件中写入IP或者能够解析的主机名
192.168.1.11
myweb1  # 能够解析
  1. 在主机清单中添加分组, 然后将IP或者能够解析的主机名写入分组
[webgroup1]
192.168.1.11
myweb2

应用案例

使用ansible的ping模块实现测试主机互通性

  1. 免密登陆
    两步免密登陆

  2. 定义主机清单文件

vim /etc/ansible/hosts
添加主机IP
192.168.1.111
...
  1. ping模块的使用
    ansible命令格式
ansible 主机清单中IP或分组名称 -m 模块
ansible 192.168.1.111 -m ping
输出
	"ping":"pong"
即可

全部
ansible all -m ping

思考

  1. 上面的ping是真ping还是假ping??
    假ping, 由于ansible使用的是ssh协议, 通过ssh连接到了远程主机, 如果成功连接即’ping’通了

使用ansible的cron模块实现配置多主机的时间同步

  1. 选择时间源服务器
  • 国内- time1.aliyun.com
  • 国外- time.windows.com
  1. cron模块应用

命令格式

ansible 主机清单中的IP或分组名称 -m 模块 -a "参数"

cron模块的使用 每小时执行一次时钟源同步

ansible 清单中的IP -m cron -a 'name="test cron1" job="ntpdate time1.aliyum.com" minute=0 hour=*/1'

首先查看时钟源是否可用

ntpdate time1.aliyum.com
如果出现the NTP socket is in used, exiting
	先关闭 ntpd
	systemctl stop ntpd
如果出现 adjust time server 正常

在其它主机上查看是否有计划任务
crontab -l

文章目录

  • ansible入门
    • 介绍
    • 使用yum安装
    • 主机清单 /etc/ansible/hosts
    • 应用案例
      • 使用ansible的ping模块实现测试主机互通性
        • 思考
      • 使用ansible的cron模块实现配置多主机的时间同步
      • 使用ansible的copy模块实现多主机配置文件的同步

使用ansible的copy模块实现多主机配置文件的同步

  1. 同步文件为/etc/hosts
[root@hadoop1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.31.234.62 hadoop1
172.31.234.76 hadoop2
172.31.234.97 hadoop3
  1. copy 模块的使用
    命令格式
ansible 清单文件中的IP或者是组名称 -m 模块名称 -a "参数"
ansible 172.31.234.76 -m copy -a "src=/etc/hosts dest=/etc/hosts"
[root@hadoop1 ~]# ansible hadoop2 -m copy -a "src=/etc/hosts dest=~/hosts"
hadoop2 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "checksum": "b476d5fc53b1799bf461d22d602360c23eba2ba6", 
    "dest": "/root/hosts", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "ee64c686d024ea414cc35aa443936081", 
    "mode": "0644", 
    "owner": "root", 
    "size": 224, 
    "src": "/root/.ansible/tmp/ansible-tmp-1618366232.25-4998-196093705045362/source", 
    "state": "file", 
    "uid": 0
}

你可能感兴趣的:(linux,ansible,linux)