配置自动化应用场景及产品ansible介绍
平板电脑应用自动更新设置介绍 #生活技巧# #数码产品使用技巧# #平板电脑优化技巧#
一、运维自动化应用场景
1. 操作系统预备自动化(常用工具 PXE kickstart cobbler) 2. 配置自动化 3. 监控自动化 系统与应用监控(zabbix)日志监控(ELK) 4. 代码持续集成与代码持续发布自动化二、配置自动化场景
配置自动化可以帮助企业在大量服务器存在的情况下,快速实现应用部署,软件配置等一大利器。通过配置自动化可以在如下方面有优异表现:
提高配置效率提高配置的准确性降低人工参与度二、配置自动化的相关产品
序号工具描述1ansible开箱即用,使用ssh协议2saltstack需要agent端配合,配置部署速度快3puppet老牌配置自动化工具,需要agent端配合三、ansible介绍
ansible一句话概括:无主无从,开箱即用,用完即走
3.1 工作原理图
ansible core : ansible 自身核心模块
host inventory: 主机库,定义可管控的主机列表
connection plugins: 连接插件,一般默认基于 ssh 协议连接
modules:core modules ( 自带模块 ) 、 custom modules ( 自定义模块 )
playbooks :剧本,按照所设定编排的顺序执行完成安排任务
ansible只需在ansible controller节点(操作机)安装即可,其他节点可以直接通过SSH协议进行连接操作
安装步骤
第1步:安装epel-releaseYUM源
[root@ansiblecontroller ~]# yum install -y epel-release
第2步:查看安装的EPEL源
[root@ansiblecontroller ~]# ll /etc/yum.repos.d/epel*
第3步:安装ansible
[root@ansiblecontroller ~]# yum install -y ansible
第四步:安装完毕,查看版本
[root@ansiblecontroller ~]# ansible --version ansible 2.4.2.0 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /bin/ansible python version = 2.7.5 (default, Aug 4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] [root@ansiblecontroller ~]# 12345678 3.3Ansible组成介绍
[root@ansiblecontroller ~]# tree /etc/ansible/ /etc/ansible/ ├── ansible.cfg ├── hosts └── roles 1 directory, 2 files [root@ansiblecontroller ~]# 12345678 核心:ansible;核心模块(Core Modules):这些都是 ansible 自带的模块;扩展模块(Custom Modules):如果核心模块不是以完成某种功能,可以添加扩展功能;插件(Plugins):完成模块功能的补充;剧本(Playbooks):ansible 的任务配置文件,将多个任务定义在剧本中,由ansible 自动执行;连接插件(Connectior Plugins):ansible 基于连接插件连接到各个主机上,虽然 ansible 是使用 ssh 连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件;主机群(Host Inventory):定义 ansible 管理的主机 3.4 主机清单
3.4.1 主机清单的作用
ansible controller 在对主机进行操作时,仅认主机清单中定义的主机列表,即从主机清单中读取到主机列表时,才可进行配置。
3.4.2 主机清单定义方法
主机清单的位置:/etc/ansible/hosts
方法一:直接在主机清单文件中写入主机IP地址或主机名(需要能够解析)
vim /etc/ansible/hosts 192.168.91.172 #或 web1 1234
方法二:在主机清单文件中添加主机分组,然后把IP或主机名写入分组内即可。
[webgroup] 192.168.91.172 #或 [webgroup] web1 123456
四、ansible应用案列
4.1 使用ansible ping模块实现测试主机互通性场景
波仔通过工单系统接到运维经理下发的任务:准备三台服务器用于开发人员项目上线使用。当准备好3台服务器后,波仔现需要了解主机之间的连通性是否正确,想到使用ansible模块对主机之间的连通性进行测试。那么波仔应该如何实现呢?
思考:
1、ansible controller是通过ssh协议与其它主机进行通信的,如果主机量较多,使用用户名和密码的方式合适吗?
2、ansible controller是对其它主机操作时,仅识别主机清单中的主机,那么如何定义主机清单呢?
3、ansible中模块使用的格式是怎样的?
步骤:
第1步:实现多主机之间免密登录
[root@ansiblecontroller ~]# ssh-keygen -t rsa -f /root/.ssh/id_rsa -N '' Generating public/private rsa key pair. Created directory '/root/.ssh'. Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:O81k5ghJ+LjtXg22qvzni3N9cHodcGIBl7KCe/qbE8M root@ansiblecontroller The key's randomart image is: +---[RSA 2048]----+ | .... | | . ..o | | . .. o . | | +... . + . | | . +oS.+. + | | o.oE&. . . | | . .o*+=+ . . | | . .o++oo o . | | o+***+ o | +----[SHA256]-----+ [root@ansiblecontroller ~]#
1234567891011121314151617181920[root@ansiblecontroller ~]# ls /root/.ssh id_rsa id_rsa.pub [root@ansiblecontroller .ssh]# ssh-copy-id 192.168.91.172 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '192.168.91.172 (192.168.91.172)' can't be established. ECDSA key fingerprint is SHA256:5KbF31PhJpQh0rcHr+Wg8TnGQAsU9jSw2ZSSvqcNBGo. ECDSA key fingerprint is MD5:23:b0:85:2e:ff:2b:4c:9b:c7:06:ca:bc:f9:45:3c:2b. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that ar e already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.91.172's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '192.168.91.172'" and check to make sure that only the key(s) you wanted were added. [root@ansiblecontroller .ssh]#
123456789101112131415161718[root@web ~]# ls /root/.ssh/ authorized_keys [root@web ~]# 123
连接时无需密码
[root@ansiblecontroller .ssh]# ssh 192.168.91.172 Last login: Tue Aug 20 18:16:29 2019 from 192.168.91.173 [root@web ~]# 123
第二步:定义主机清单
# 主机清单的位置:/etc/ansible/hosts # 主机清单中添加主机 192.168.91.172 123
第三步:ping模块使用
ansible 主机清单中IP或分组名称 -m 模块 [root@ansiblecontroller ~]# ansible 192.168.91.172 -m ping 12

场景
波仔在实现多主机互通测试后,考虑到可能需要对服务器进行时间同步的操作,以避免开发人员上线项目后因主机问时间不同步,导致的应用不可用的情况发生,波仔决定使用ansible cron模块对主机进行时间周期性同步。
步骤
第1步:选择时钟源服务器
国内建议使用阿里时钟源time1 .aliyun.com国际建议使用微软时钟源time.windows.com第2步: cron模块应用
[root@ansiblecontroller ~]# ntpdate time1.aliyun.com 20 Aug 18:02:56 ntpdate[4571]: step time server 203.107.6.88 offset -1.003700 sec You have new mail in /var/spool/mail/root [root@ansiblecontroller ~]# 1234
# ansible命令格式 [root@ansiblecontroller ~]# ansible 主机清单中IP或分组名称 -m 模块 -a "参数" # cron模块的使用 [root@ansiblecontroller ~]# ansible 192.168.91.172 -m cron -a 'name="test cron1" job="ntpdate time1.aliyun.com" minute=0 hour=*/1' # 每小时与时钟源同步一次 # 远程主机结果 [root@web ~]# crontab -l 1234567


场景
波仔对上述主机进行时间同步后,接运维经理工单下发任务小贴士,特别强调,上述准备的服务器先运行在公司内部网络中,待稳定性测试后,再转至托管机房,因此需要在项目上线测试时,提供项目中域名解析工作,为了简化运维复杂度,建议波仔直接使用主机本地解析文件来完成域名解析工作,每台主机都需要本地解析文件,请问波仔如何使用ansible copy模块实现多主机本地域名解析文件的同步?
步骤:
第1步:准备本地域名解析文件
[root@ansiblecontroller ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.91.173 ansiblecontroller 192.168.91.172 web 12345
第2步:copy模块应用
# ansible命令格式 [root@ansiblecontroller ~]# ansible 主机清单中IP或分组名称 -m 模块 -a "参数" # copy模块的使用 [root@ansiblecontroller ~]# ansible 192.168.91.172 -m copy -a "src=/etc/hosts dest=/etc/hosts" # 远程主机验证 [root@ansiblecontroller ~]# cat /etc/hosts 12345678


网址:配置自动化应用场景及产品ansible介绍 https://www.yuejiaxmz.com/news/view/1405815
相关内容
【补充】Python的自动化工具Ansible自动化运维与python项目实战:Ansible自动化任务
自动化编排工具(Ansible)
自动化运维:使用Ansible简化日常任务
Ansible: 简单而强大的IT自动化工具
Ansible自动化运维与任务执行
Ansible 自动化运维工具详解
自动化运维介绍以及各种工具
带你了解Linux自动化运维工具——ansible
一课玩转自动化运维全流程,轻松应对自动化运维岗MK

