Ansible 一


Ansible是一个配置管理系统configuration management system

 

你只须要可使用ssh访问你的服务器或设备就行。html

1.安装软件
2.配置服务python

Ansible能作什么

ansible能够帮助咱们完成一些批量任务,或者完成一些须要常常重复的工做。
好比:同时在100台服务器上安装nfs服务,并在安装后启动服务。
好比:将某个文件一次性拷贝到100台服务器上。
好比:每当有新服务器加入工做环境时,你都要为新服务器部署某个服务,也就是说你须要常常重复的完成相同的工做。
这些场景中咱们均可以使用到ansible。
Cobbler
Ansible

 

 

1.购买机器->2.配置环境->3.部署代码->4测试->5.加入集群linux

 

Ansible/Saltstack(master->minion)web

 

 

Ansible软件特色

1.ansible不须要单独安装客户端,SSH至关于ansible客户端。
2.ansible不须要启动任何服务,仅需安装对应工具便可。
3.ansible依赖大量的python模块来实现批量管理。
4.ansible配置文件/etc/ansible/ansible.cfg

 



 

 

 

 

 

 

 

 

实现从管理机m01到其余机器的密钥认证


0.ansible借助公钥批量管理
#利用非交换式工具实现批量分发公钥与批量管理服务器shell

[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7

 

1.安装ansiblevim

[root@m01 ~]# yum install ansible -y

 

2.配置ansible服务器

[root@m01 ~]# vim /etc/ansible/hosts
[oldboy]
172.16.1.31
172.16.1.41

 

3.验证ansible
# ansible是经过ssh端口探测通讯ssh

[root@m01 ~]# ansible oldboy -m ping
172.16.1.7 | SUCCESS => {
"changed": false, 
"ping": "pong"
}
172.16.1.31 | SUCCESS => {
"changed": false, 
"ping": "pong"
}
172.16.1.41 | SUCCESS => {
"changed": false, 
"ping": "pong"
}

 

 


#批量执行命令工具

[root@m01 ~]# ansible oldboy -m command -a "df -h"

 



2.若是没有给对应的主机下发公钥,可使用密码的方式进行添加测试

172.16.1.41 ansible_ssh_user='root' ansible_ssh_pass='1' ansible_ssh_port='22'

 

 

 

 

 

 

 

 

 

 

 

3.定义主机清单

[web]
172.16.1.7

[nfs]
172.16.1.31

[backup]
172.16.1.41

[oldboy:children]
web
nfs
backup

 

[root@m01 ~]# ansible web --list-hosts #web
hosts (1):
172.16.1.7
[root@m01 ~]# ansible nfs --list-hosts #nfs
hosts (1):
172.16.1.31
[root@m01 ~]# ansible backup --list-hosts #rsync
hosts (1):
172.16.1.41
[root@m01 ~]# ansible oldboy --list-hosts #集中全部的小组,用于执行一些基础的配置
hosts (3):
172.16.1.31
172.16.1.41
172.16.1.7

 




一、命令 -> 文件 = 脚本
二、模块 -> 文件 = 剧本

安装 配置 启动

1.command 执行命令
2.shell 执行命令

 


3.yum 安装软件模块
4.copy 配置模块
5.service 启动服务模块
6.user 用户管理
7.file 建立目录,建立文件,往文件写内容
8.cron 定时任务
9.mount 挂载

 

 

 

1.command命令模块

# 默认模块, 执行命令

[root@m01 ~]# ansible oldboy -a "hostname"

 


# 若是须要一些管道操做,则使用shell

[root@m01 ~]# ansible oldboy -m shell -a "ifconfig|grep eth0" -f 50 

 

  

//后面的50定义一次性显示多少个主机内容
# -f =forks /etc/ansible/ansible.cfg #结果返回的数量   

这个文件参数能够更改一次性出现几个输出内容

 

2.yum安装模块
#推送脚本文件至远程,远程执行脚本文件

[root@m01 ~]# ansible oldboy -m yum -a "name=httpd state=installed"

 


name ---指定要安装的软件包名称
state ---指定使用yum的方法
installed,present ---安装软件包
removed,absent ---移除软件包
latest ---安装最新软件包

3.copy模块

查看帮助命令,copy

 


# 推送文件模块

[root@m01 ~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/test.txt owner=www group=www mode=0600"

 

# 在推送覆盖远程端文件前,对远端已有文件进行备份,按照时间信息备份

[root@m01 ~]# ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp/test.txt backup=yes"  要备份

 

 

# 直接向远端文件内写入数据信息,而且会覆盖远端文件内原有数据信息

[root@m01 ~]# ansible oldboy -m copy -a "content='bgx' dest=/tmp/oldboy"

 

src --- 推送数据的源文件信息
dest --- 推送数据的目标路径
backup --- 对推送传输过去的文件,进行备份
content --- 直接批量在被管理端文件中添加内容
group --- 将本地文件推送到远端,指定文件属组信息
owner --- 将本地文件推送到远端,指定文件属主信息
mode --- 将本地文件推送到远端,指定文件权限信息

 

 

 

4.service服务模块

[root@m01 ~]# ansible oldboy -m service -a "name=crond state=stopped enabled=yes"
name --- 定义要启动服务的名称
state --- 指定服务状态是中止或是运行
started --- 启动
stopped --- 中止
restarted --- 重启
reloaded --- 重载
enabled --- 是否让服务开启自启动

 

 

 三部曲

1.安装
[root@m01 ~]# ansible web -m yum -a "name=httpd state=installed"
2.配置
[root@m01 ~]# ansible web -m copy -a "content='This is Ansible' dest=/var/www/html/index.html"
3.启动
[root@m01 ~]# ansible web -m service -a "name=httpd state=started"

 

yum copy service mount cron user file 1.机器还原快照(firewalld、selinux、配置好仓库)2.推送你的公钥3.指定backup安装rsync、配置、启动、建立目录、建立用户、准备密码文件、权限4.指定nfs安装nfs、配置、启动5.web挂载nfs6.web执行脚本推送数据至bakcup,加入定时任务

相关文章
相关标签/搜索