自动化运维工具之ansible

1、什么样的情形须要批量部署mysql

一、操做系统的安装web

常见的有collber,red hat satelite(redhat)系统专用。sql

二、操做系统的配置shell

常见的有cfengine,puppet,chef,func。其中puppet最受欢迎服务器

三、批量程序的部署架构

四、批量命令的运行查看状态信息框架

2、ansible介绍less

ansible的架构大体以下运维

wKiom1cNHvbQi9C5AABpqTFIsoM324.pngansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优势实现了批量操做系统配置、批量程序的部署、批量运行命令等功能。ssh

运维工具常见的工做模式  

一、agent模式: 基于ssl实现。代理工做在被监控端。像puppet。  

二、agentless模式: 基于ssh服务实现工做在被监控端。监控端是ssh的客户端。 


ansible是工做在agentless模式下具备幂等性。ansible在控制端只须要告诉监控端的指望状态就能够实现批量部署。名词解释  

幂等性不会重复执行相同的指令。例如不会重复安装软件  

指望状态只须要告诉被监控端的指望状态 

ansible是基于模块工做的ansible自己没有批量部署的能力。真正具备批量部署的是ansible所运行的模块ansible只是提供一种框架。架构包括

  • 链接插件connection plugins负责和被监控端实现通讯。

  • Host Inventory:指定操做的主机,是一个配置文件里面定义监控的主机

  • 各类模块核心模块command模块自定义模块

  • 借助于插件完成记录日志邮件等功能

  • PlayBooks:剧本执行多个任务时。并不是必需可让节点一次性运行多个任务

3、ansible的基本使用

安装软件yum install ansible -y # 对应的软件在 epel 仓库中也可本身手动编译

wKioL1cNIFKAVw01AAA1PhcMadI893.png

查看模块

ansible-doc -l

ansible-doc -s 模块名

 

ansible <Host-partten> [-f forks][-m module_name][-a args]

                          -f forks: 启动时并线程

                                     -m module_name 要使用的模块

                                                       -a args:模块参 常见模块:command:默认模块,用来执行远程命令

# ansible all -m command -a 'cat /etc/passwd

# ansible all -a 'date'

# ansible 192.168.2.35 -m command -a 'yum remove mysql -y'

 

查看模块参数

# ansible-doc -s 模块名

 

cron:计划模块

ansible 192.168.2.35 -m cron -a 'minute="*/10" job="/bin/echo fcuk you" name="test cron job"'

           present:安装

                       absent:移出


user模块,用来添加删除用户

# ansible all -m user -a 'name=test1'

# ansible all -m user -a 'name=test1 state=absent'  移除user

 

group 组模块,添加删除组

# ansible all -m group -a 'name=mysql gid=306 system=yes'

 

copy 模块,拷贝文件

   sec:本地源文件路径

   dest:远程存取路径

   content:取代src=,直接用来生成目标文件内容。

# ansible all -m copy -a 'src=/etc/fstab dest=/tmp/'

# ansible all -m copy -a 'content="Hello\nHi test.com" dest=/tmp/test.txt'

 

file 模块,主要用来改权限,作链接,

 范例:把文件fstab 属主改为mysql 组改成mysql 权限是600

ansible 192.168.2.35 -m file -a 'owner=mysql mode=600 group=mysql path=/tmp/fstab'


fstab建立一个链接fstab.link

src=:源文件

path=:产成符号链接的路径

# ansible 192.168.2.35 -m file -a 'path=/tmp/fstab.link src=/tmp/fstab state=link'

 

ping模块远程主机在线否

# ansible all -m ping


service模块指定运行的程序:

enabled=:是否开机自启动,取值为ture或者false;

name=:服务器名

state=状态,取值有started,stoped,restarted

# ansible-doc -m service

# ansible all -a 'service httpd status'

# ansible all -a 'chkconfig --list httpd'

 wKioL1cN0xGSwDhzAACX7lVsX9I204.png

# ansible-doc -s shell

shell 模块:在远程主机上运行模块,尤为用到管道有等功能时

 范例:建立user1用户并添加密码

# ansible web1 -m user -a 'user=user1'

# ansible web1 -m shell -a 'echo 123456 | passwd --stdin user1'

 

 script模块

# ansible-doc -s script

将本地脚本复制到远程并运行

# ansible web1 -m script -a '/root/test.sh'

 

yum模块:

# ansible-doc -s yum

     name=:指明安装的软件名,能够带上版本号

     state=absent:卸载

# ansible all  -m yum -a name=mysql-server

# ansible all  -m yum -a ‘name=mysql-server state=absent’

 

setup:收集远程的facts

       facts:每一个被管理主机在被管理前,会把本身主机相关信息报告给ansible主机

相关文章
相关标签/搜索