博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
运维自动化之1 - ansible 批量主机管理
阅读量:4967 次
发布时间:2019-06-12

本文共 2397 字,大约阅读时间需要 7 分钟。

2000 - 2016 年,维护的小型机、linux刚开始的2台增加到上千台,手工检查、日常版本升级需要管理太多设备,必须通过运维自动化实现

特别是版本升级,需要到同类机器部署代码、起停设备,必须在一台主控机上完成代码分发、远程服务起停、服务验证验证

2016年开始使用 pssh ,后改用 ansible ,ansible 配置如下

一、配置ssh免密码登录

#cd /root/.ssh

免交互生成密钥

#echo -e "\n" |ssh-keygen -t rsa -N ""

发送锁头给 web1机器

#ssh-copy-id -i /root/.ssh/id_rsa.pub root@web1 ,如下

[root@fox .ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@web1

The authenticity of host 'web1 (192.168.80.131)' can't be established.
RSA key fingerprint is 9c:c0:e2:2b:6f:88:c8:b1:25:47:f6:4b:fa:8f:cd:00.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'web1,192.168.80.131' (RSA) to the list of known hosts.
root@web1's password:

[root@fox ~]# sed -i 's#fox#web01#g' /etc/sysconfig/network

[root@fox ~]# more /etc/sysconfig/network

注:如果机器不同,需要自动应答时,可采用 expect 软件实现 ,expect 用法查见

https://www.cnblogs.com/yangmingxianshen/p/7967040.html

 

二、安装ansible

1. Master端安装EPEL第三方yum源

# rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
2.安装Ansible
# yum install ansible -y
出现 Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
解决方法: 一句话:把/etc/yum.repos.d/epel.repo,文件第3行注释去掉,把第四行注释掉。
打开/etc/yum.repos.d/epel.repo,将
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
修改为
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
3。再清理源,重新安装
yum clean all
这一次安装成功
# yum install ansible -y

注:问题解决参考了https://www.cnblogs.com/dadong616/p/5062727.html

三、ansible 使用

1.远程命令模块   command: 执行远程主机SHELL命令 (这是在远程机器上执行命令)

# ansible webservers -m command -a "free -m"

2.script: 远程执行MASTER本地SHELL脚本.(类似scp+shell) 注意,这个脚本要放在 MASTER ,很实用的命令

#echo "hostname" > /tmp/test1.sh

#chmod 700 /tmp/test1.sh

# ansible web -m script -a "/tmp/test1.sh"

web1 | SUCCESS => {"changed": true, "rc": 0, "stderr": "Shared connection to web1 closed.\r\n", "stderr_lines": ["Shared connection to web1 closed."], "stdout": "web01\r\n", "stdout_lines": ["web01"]}

 

其他模块和用法,详见 https://www.cnblogs.com/cheyunhua/p/8151603.html

 

总结:

1.工具使用提高效率

2 脚本整理好,随时使用

3 用于日常版本升级,一键部署环境、快速定位诊断等场合

转载于:https://www.cnblogs.com/micfox/p/10992999.html

你可能感兴趣的文章
Nginx配置文件nginx.conf中文详解(转)
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
利用sed把一行的文本文件改成每句一行
查看>>
Android应用开发:核心技术解析与最佳实践pdf
查看>>
python——爬虫
查看>>
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
查看>>
求一个字符串中最长回文子串的长度(承接上一个题目)
查看>>
简单权限管理系统原理浅析
查看>>
springIOC第一个课堂案例的实现
查看>>
求输入成绩的平均分
查看>>
php PDO (转载)
查看>>
wordpress自动截取文章摘要代码
查看>>
[置顶] 一名优秀的程序设计师是如何管理知识的?
查看>>
scanf和gets
查看>>
highcharts 图表实例
查看>>
ubuntu下如何查看用户登录及系统授权相关信息
查看>>
秋季学期学习总结
查看>>
SpringBoot 优化内嵌的Tomcat
查看>>
【LaTeX】E喵的LaTeX新手入门教程(1)准备篇
查看>>