Bootstrap

ansible自动化运维

ansible自动化运维

1、实现远程连接主机

2、批量配置,批量操作,ansible可以对主机进行组划分,也可以把名下所有的主机进行划分,进行批量的操作。

3、远程自动化运维(脚本-------------playbook剧本)

ansible是基于python语言开发的,配置管理和部署应用的工具。

批量的配置,部署,管理“上千台”主机。

ansible只要在一台主机上就可以对其他主机进行操作。

4、ansible的工作模式:没有固定的客户端这一说法,不是c/s。

使用模块来进行工作,ansible的模块有很多,copy shell  真正的目标主机上执行任务的是模块。

5、ansible的特性:

幂等性,计算机中的概念,在幂等操作中,无论执行多少次,结果都是一样的,多次执行相同的操作,不会产生不同的结果。

在ansible中,如果你的操作是符合幂等性,那么不会对目标主机产生额外的副作用。

6、ansible的组件:

1、lnventory  主机清单   主机组

2、modules  模块----------学习的重点

3、plugins 插件

4、playbooks  剧本(脚本) ----------重点

ansible的优点:

部署快,只要能上网,或者有源码包,安装部署很简单

基于yaml格式编写的脚本

同一台服务器上多次执行同一个任务没有任何副作用

缺点:

语法要专门学

主机和目标主机必须都是linux,主机和server

命令格式:


ansible all -m command -a 'date'
ansible 固定开头
all:<组名,ip,all,>声明操作的对象
-m 指定模块
command 就是模块名
-a 指定参数(指定操作)

“date”:具体要执行的命令

1、command模块

就是在目标主机执行命令,不支持管道符,也不能使用重定向
chdir=/opt 声明目标主机的目录

creates:判断指定的文件是否存在,如果存在,不执行后续的操作

removes:判断指定的文件是否存在,如果存在,执行后续的操作

2、shell模块

就是command模块的升级,但是可以使用管道符,可以重定向还可以使用连接符链接多个命令。

&&逻辑且,所有的命令必须执行成功才算完成

;逻辑或,失败一个任务不影响全局的执行

3、cron模块
分/时/日/月/周
minute/hour/day/month/weekday

-m cron
name 计划任务的名称

job: 计划的执行的命令

stat:present  表示添加,默认就是添加可以不写

       absent 表示移除

删除定时任务

4、user和group

-m user  

-m group

name 用户名或者组名  必有参数

state=present | absent

           创建          删除

uid

gid

shell:默认就是/nin/bash

create_home yes | no 是否替换用户的家目录

remove=yes | no 删除用户时是否删除家目录

password 创建用户的登入密码

system yes | no 表示该用户是否是系统用户

创建用户

修改家目录

删除用户

创建组

删除组

5、copy复制

dest: 文件复制到目标主机的位置
src:源文件,主机的文件------------》目标主机

如果复制目录,源文件是目录,那么目标主机的路径也是目录

mode:修改目标文件权限

owner:文件的所有者

group:文件的所在组

content:复制输出的内容到目标主机,使用content就不能使用src

复制配置文件到目标主机

将内容重定向追加到目标主机

复制目录

剪切

6、file模块----和copy有相似之处

owner  所有者

group  所在组

mode 权限

path----------->目标主机的文件路径

state------->link作为软连接    touch  创建   absent  删除

src-------------->指定创建的文件为软连接

7、hostname 设置目标主机的主机名

8、ping  测试目标主机的连通性

9、yum/apt 模块      安装和卸载         

10、service模块。

也可以用command或者shell模块-----systemctl 对服务状态进行控制

name=软件名
enabled=true---- 开机自启
state=started stopped restarted  开   停   重启

runlevel=40 设定开机自启动的运行级别。数字越大,级别越高

重启

开机自启

11、iptables------ubuntu和centos

firewalld ------- centos

对端口进行放行和删除策略

ubuntu

centos

放行

删除

12、script模块

指定本地的脚本,然后脚本中的命令在目标主机执行,结果也是输出到目标主机。

13、setup模块 收集节点信息,查看目标主机的配置信息

通过facts组件收集

查看内核

查看系统

可以不用设置免密登入

[defaults]

host_key_checking = False #禁止使用ssh的密钥检查

inventory = /etc/ansible/hosts #指定主机清单的文件

forks = 20 #同时可以对多少主机进行配置,默认是5,可以提高执行的速度

pipelining = True #减少对ssh会话中的操作,提高性能

strategy = free #任务会立即对下一个主机并行执行,不用等待其他主机完成

retry_files_enabled = False #如果任务失败,禁用自动重试的功能

指定ip范围

ansible实操

test1  ansible

test2 目标主机1

test3 目标主机2

test1

安装ansible

apt -y install ansible

设置免密登入

提取出ip地址

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;