一.ansible

Ansible是近年越来越火的一款运维自动化工具,其主要功能是帮助运维实现IT工作的自动化、降低人为操作失误、提高业务自动化率、提升运维工作效率。

常用于软件部署自动化、配置自动化、管理自动化、系统化系统任务、持续集成、零宕机平滑升级等。

常见的部署管理工具有Chef、Puppet、Ansible、SaltStack、Fabric.

Ansible发布于2012年,其作者兼创始人是Michael DeHaan。

二.ansible安装与配置

1.三台主机上配置yum源并安装

[root@server12 ~]# cd  /etc/yum.repos.d/
[root@server12 yum.repos.d]# vim epel.repo
[root@server12 yum.repos.d]# yum repolist
[root@server12 yum.repos.d]# yum list ansible
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Available Packages
ansible.noarch                                                            2.9.10-1.el7                                                            epel
[root@server12 etc]# yum install ansible -y
[root@server12 yum.repos.d]# scp epel.repo root@172.25.13.13:/etc/yum.reposd.
[root@server12 yum.repos.d]# scp epel.repo root@172.25.13.14:/etc/yum.reposd.

在这里插入图片描述

2.编写文件,添加后端服务器并测试

[root@server12 etc]# cd ansible/
[root@server12 ansible]# ls
ansible.cfg  hosts  roles
[root@server12 ansible]# vim hosts
[root@server12 ansible]# grep -v ^# hosts | uniq

[test]
server13

[prod]
server14

###做免密操作
[root@server12 .ssh]# ssh-keygen    
[root@server12 .ssh]# ssh-copy-id server13
[root@server12 .ssh]# ssh-copy-id server14
###测试
[root@server12 .ssh]# ansible all -m ping -k
[root@server12 .ssh]# ansible server13 -m ping -k
[root@server12 .ssh]# ansible test -m ping -k

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.建立普通用户并测试

[root@server12 ansible]# useradd devops
[root@server12 ansible]# id devops
uid=1000(devops) gid=1000(devops) groups=1000(devops)
[root@server12 ansible]# su - devops
[root@server13 .ssh]# useradd devops
[root@server13 .ssh]# id devops
uid=1000(devops) gid=1000(devops) groups=1000(devops)
[root@server13 .ssh]# passwd devops
[root@server14 ~]# useradd devops
[root@server14 ~]# id devops
uid=1000(devops) gid=1000(devops) groups=1000(devops)
[root@server14 ~]# passwd devops 
用普通用户连接失败
[devops@server12 ~]$ ansible test -m ping -k

在这里插入图片描述

用root用户连接成功
[devops@server12 .ssh]$ ansible test -m ping -u root -k

在这里插入图片描述免密操作

在这里插入图片描述

在这里插入图片描述

普通用户连接成功

在这里插入图片描述
在这里插入图片描述

4.以devops用户,sudo至root执行ping存活检测

设置sudo操作免密执行
[root@server13 ~]# visudo
[root@server14 ~]# visudo

在这里插入图片描述
在这里插入图片描述
执行sudo操作

[devops@server12 ansible]$ ansible all -m ping -b

在这里插入图片描述

在这里插入图片描述

5.配置文件优先级(默认root/ansible优先级最高)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三. ansible与正则表达式

匹配所有主机,all或*号功能相同。
ansible all –m ping  
ansible "*" -m ping 
ansible 172.25.13.* -m ping 
对多台主机或多个组同时执行,相互之间用冒号分隔即可
ansible "test:prod" -m ping 
在test组但不在prod组的主机,用感叹号表示
ansible 'test:!prod' -m ping 
在webserver组和database组中同时存在的主机,用&符号表示
ansible "webservers:&database" -m ping
模糊匹配
*.example.com
www*.com:database 

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四.ansible常用模块

1.copy模块

在这里插入图片描述
操作失败
在这里插入图片描述

在这里插入图片描述
成功
在这里插入图片描述

2.user模块

在这里插入图片描述

在这里插入图片描述

3.yum模块

(1)安装apache

在这里插入图片描述
在这里插入图片描述

(2)编辑默认发布文件

在这里插入图片描述

(3)访问测试:

在这里插入图片描述

(4)更改服务端口,并开启服务

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.file模块

(1)修改文件权限为600
[devops@server12 ansible]$ ansible test -m file -a "dest=/etc/httpd/conf/httpd.conf mode=600"

在这里插入图片描述
在这里插入图片描述

(2)更改文件权限和拥有者以及所属组
[devops@server12 ansible]$ ansible test -m file -a "dest=/etc/httpd/conf/httpd.conf mode=600 owner=devops group=devops"

在这里插入图片描述
在这里插入图片描述

5.service模块

(1)开启防火墙
[devops@server12 ansible]$ ansible test -m service -a "name=firewalld state=started"

在这里插入图片描述

(2)在防火墙中添加http策略
立即生效
[devops@server12 ansible]$ ansible test -m firewalld -a "service=http state=enabled permanent=yes"    

在这里插入图片描述
在这里插入图片描述

(3)添加https策略
[devops@server12 ansible]$ ansible test -m firewalld -a "service=https state=enabled permanent=yes immediate=yes"

在这里插入图片描述

在这里插入图片描述

(4)防火墙中添加8000端口
[devops@server12 ansible]$ ansible test -m firewalld -a "port=8000/tcp state=enabled permanent=yes immediate=yes"

在这里插入图片描述
在这里插入图片描述

(5)关闭8000端口
[devops@server12 ansible]$ ansible test -m firewalld -a "port=8000/tcp state=disabled permanent=yes immediate=yes"

在这里插入图片描述
在这里插入图片描述

(6)安装mariadb
[devops@server12 ansible]$ ansible prod -m yum -a "name=mariadb-server state=present"

在这里插入图片描述

(7)开启mariadb数据库
[devops@server12 ansible]$ ansible prod -m service -a "name=mariadb state=started enabled=yes"

在这里插入图片描述

(8)创建用户,授予权限
[devops@server12 ansible]$ ansible prod -m mysql_user -a "login_user=root login_password=westos name=lj password=westos priv='*.*:select host='%' state=present"

在这里插入图片描述

Logo

一站式 AI 云服务平台

更多推荐