Ansible 自动化运维工具详解

发布时间:2024-12-03 17:42

家庭自动化维修工具:必备螺丝刀、万用表等基础工具。 #生活知识# #家庭维修常识# #家庭自动化维修#

一:Ansible介绍

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,
实现了批量系统配置、批量程序部署、批量运行命令等功能。无客户端。

我要讲一些Ansible的安装和一些基本概念,然后我们会开始研究一些真正有意思的东西 – playbook,配置管理,部署以及语法编排.我将会写出如何使用/usr/bin/ansible执行ad-hoc并行命令,还会列出ansible的核心有什么样的模块可供使用.当然以后你也可以写你自己的模块。

二:Ansible安装部署

ansible安装需要有epel源。如果您没有安装epel源可以执行我下面的安装命令,该命令是从阿里源镜像安装的epel源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum -y install ansible #安装ansible

在安装部署这里可以vim /etc/hosts ,把客户机的域名写上去。

三:ssh-key(可选)

给所有客户机设置免密码ssh-key的方式。这样后面进行测试的时候会方便很多。

ssh-keygen

ssh-copy-id 192.168.133.160

四:Ansible基础

1.定义一下主机清单,vim /etc/ansible/hosts,在这里写上客户机的IP

2.测试连通性 ansible   localhost   -m ping    -m 指定模块。什么功能

3.简洁输出    ansible host1 -m ping  -o 

4.know_hosts    ansible host2 -m ping -u root -k 用户密码 -o  增加用户名选项,增加密码选项  注意:这里的host2主机域名是已经在主机清单中写过的。

五:Inventory -主机清单

1 增加主机组  vim /etc/ansible/hosts

[webserver] #webserver这是主机组名,下面的四个都是组成员

host1

host2

host3

host4

2 增加用户名 密码    vim /etc/ansible/hosts,如果已经做过了免密登录那就可以不做这一步。

[webserver]

host[1:4] ansible_ssh_user='root' ansible_ssh_pass='666666' #组成员host1到host4,这是个简便写法,user是root,pass是666666

3 组:变量 vim /etc/ansible/hosts

[webserver]

host[1:4]

[webserver:vars]

ansible_ssh_user='root'

ansible_ssh_pass='666666'

常用变量

4 子分组

将不同的分组进行组合  vim /etc/ansible/hosts

[apache] #组1

host[1:2] #组1中的成员

[nginx] #组2

host[3:4] #组2中的成员

[webserver:children] #webserver组,children参数是子分组的意思

apache #子分组一

nginx #子分组二

[webserver:vars] #webserver的变量

ansible_ssh_user='root'

ansible_ssh_pass='666666'

5 自定义主机列表 vim hostlist 

[dockers]

host1

host2

[dockers:vars]

ansible_ssh_user='root'

ansible_ssh_pass='666666'

ansible -i hostlist dockers -m ping -o

六:Ad-Hoc-点对点模式

临时的,在ansible中是指需要快速执行的单条命令,并且不需要保存的命令。对于复杂的命令则为 playbook。

1.shell模块   调用帮助:ansible-doc shell

ansible webserver -m shell -a 'hostname' -o -f 2 #获取主机名,-f2指定线程数,一次并发执行的线程数

ansible host2 -m shell -a 'yum -y install httpd' -o #部署apache

2.复制模块    调用帮助:ansible-doc copy

ansible webserver -m copy -a 'src=/etc/hosts dest=/tmp/2.txt owner=root group=bin mode=777 backup=yes' #src后面是原文件,dest后面是目标目录和修改后的文件名,owner用户,group用户组,mode权限,backup=yes备份,如果文件有多份,可以进行备份。

3.用户模块     调用帮助:ansible-doc user

ansible webserver -m user -a 'name=qianfeng state=present'

ansible webserver -m user -a 'name=qianfeng state=absent'

echo '777777' | openssl passwd -1 -stdin

ansible webserver -m user -a 'name=qianfeng password="$1$XVzsJMDr$5wI4oUaQ.emxap6s.N272."'

ansible webserver -m user -a 'name=qianfeng shell=/sbin/nologin append=yes'

4.软件包管理     调用帮助:ansible-doc yum

ansible host2 -m yum -a 'name="httpd" state=latest' #安装apache

ansible host2 -m yum -a 'name="httpd" state=absent' #卸载apache

5.服务模块       调用帮助:ansible-doc service

ansible host2 -m service -a 'name=httpd state=started' #启动apache

ansible host2 -m service -a 'name=httpd state=started enabled=yes' #apache开机自启

ansible host2 -m service -a 'name=httpd state=stopped' #关闭apache程序

ansible host2 -m service -a 'name=httpd state=restarted' #重启apache程序

ansible host2 -m service -a 'name=httpd state=started enabled=no' #开机禁止启动

6.文件模块     调用帮助:ansible-doc file   

ansible host1 -m file -a 'path=/tmp/88.txt mode=777 state=touch' #创建文件

ansible host1 -m file -a 'path=/tmp/99 mode=777 state=directory' #创建目录

还有其他很多参数,我这里就不一一列举了,可以通过上面的帮助逐一查看。

7.收集模块      调用帮助:ansible-doc 

ansible host3 -m setup -a 'filter=ansible_all_ipv4_addresses' #查询IPv4地址

7.YAML-YAML Ain’t Markup Language-非标记语言

示例,编写一个剧本,完成web的部署,配置,启动的全过程。

vim apache.yaml

- hosts: host2 #针对host2主机做

tasks: #任务

- name: install apache packages #描述

yum: name=httpd state=present #安装httpd

- name: copy apache conf #描述

copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf #将本机的apache配置文件复制为 host2的配置文件。

notify: restart apache service #引用处理程序

- name: ensure apache is running #描述

service: name=httpd state=started enabled=yes #开启apache服务,设置为开机自启

handlers: #定义处理程序,如果没有被 notify,handlers 不会执行

- name restart apache service

service: name=httpd state=restarted

网址:Ansible 自动化运维工具详解 https://www.yuejiaxmz.com/news/view/362533

相关内容

带你了解Linux自动化运维工具——ansible
自动化运维:使用Ansible简化日常任务
自动化运维工具
【补充】Python的自动化工具Ansible
Ansible: 简单而强大的IT自动化工具
自动化运维工具saltstack详解
提升效率,主流自动化运维工具推荐
业界主流的自动化运维工具有哪些
使用 Ansible 和 Github 的工作流程自动化和测试点文件
Web自动化测试工具Selenium

随便看看