ansible(1)

简介: Ansible概述:是一个配置管理系统(configuration management system),当下最流行的批量自动化运维工具之一.

Ansible概述:

 是一个配置管理系统(configuration management system),当下最流行的批量自动化运维工具之一.

常用的运维工具:

   ssh/puppet(ruby)/ansible(无客户端,中小规模)(python)/saltstack(master-minion)(python)大规模


Ansible的作用

:    批量部署,服务安装,日常备份


Ansible官方文档:

  https://docs.ansible.com/ansible/latest/index.html


Ansible的特性:

   无客户端软件,通过ssh远程管理

   安装后不需要启动服务

   依赖大量的Python模块扩展功能

   配置文件:/etc/ansible/ansible.cfg


Ansible基础架构:

   连接插件(connecter plugins):用来连接主机,连接被管理端

   核心模块(core modules):连接主机,实现操作,依赖于具体模块来执行

   自定义模块:用户自己开发的功能模块

   剧本(playbook):将多个任务组合成一个剧本,由ansible自动批量执行

   主机清单(host inventory):定义ansible管理的客户端主机范围

Ansible的命令格式:

   ansible 主机清单名 -m 调用的模块  -a 动作命令

 

#########################################################################


Ansible的配置:

ansible:192.168.8.10

web:192.168.8.20

nfs:192.168.8.30

rsync:192.168.8.40


ifdown ens33;ifup ens33

systemctl stop firewalld

systemctl disable firewalld

setenforce 0


1.安装ansible

(1)先配epel源:

epel源(扩展包):wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  

linux镜像源(组包):wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

(2)安装ansible

yum -y install ansible

    查看版本

ansible --version


2.配置清单

vim /etc/ansible/hosts

添加:

[web]

192.168.8.20

[nfs]

192.168.8.30

[rsync]

192.168.8.40


[benet:children]

web

nfs

rsync

保存退出


3.在ansible上配置ssh秘钥对访问

ssh-keygen -t rsa

ssh-copy-id root@192.168.8.20

ssh-copy-id root@192.168.8.30

ssh-copy-id root@192.168.8.40


########################################################################


调用常用模块

安装软件

修改配置

创建程序用户和组

创建目录,修改归属和权限

启动服务

挂载

测试


调用模块颜色显示:

   翔黄色     更改成功

   帽绿色  没有更改

   深红色  错误

   亮紫色  警告


列出所有模块

ansible-doc --list


查看ansible模块帮助

ansible-doc yum


1.command #仅支持简单语法命令,但语句中不能包含管道符等复杂元素

   ansible web -m command -a "hostname"

   ansible web -m command -a "useradd zhangsan"

 

2.shell   #command升级版,支持复杂语句,但不支持别名

   ansible web -m shell -a "echo 123 |passwd --stdin zhangsan"

 

3.yum    

   ansible web -m yum -a "name=httpd state=installed"

   注释:name  安装的软件包名,多个软件","分开

         state 服务状态

               installed,present    安装软件包

               removed,absent        卸载软件包

               latest            安装最新软件包

             

       

4.copy

   ansible benet -m copy -a "src=/etc/hosts  dest=/etc/hosts backup=yes"

   注释:

       src      源文件路径

       dest     目标文件路径

       backup  覆盖到目标文件前,是否提前备份

       content 添加文件内容

       group   指定属组

       owner   指定属主

       mode    指定权限



   案例:在ansible上远程配置rsync服务


   (1)修改rsync配置文件,并传到rsync服务器

   mkdir /etc/ansible/conf

   cd /etc/ansible/conf

   cp /etc/rsyncd.conf ./

   vim rsyncd.conf

   修改为:

   uid = root

   gid = root

   port 873

   address = 192.168.8.40

   hosts allow = 192.168.8.0/24

   max connections = 4

   pid file = /var/run/rsyncd.pid

   timeout = 900

   dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

   [backup]

       path = /backup

       read only = no

       auth users = rsync_backup

       secrets file = /etc/rsync.password

   保存退出

   ansible rsync -m copy -a "src=rsyncd.conf  dest=/etc/rsyncd.conf backup=yes"

 

   (2)启动rsync服务

   ansible rsync -m systemd -a "name=rsyncd state=restarted"

 

   (3)创建目录,并赋权,更改属主属组

   ansible rsync -m file -a "path=/backup owner=root group=root recurse=yes mode=777"

 

   (4)配置rsync服务器的密码文件:

   ansible rsync -m copy -a "content='rsync_backup:1' dest=/etc/rsync.password owner=root group=root mode=600"

   ansible rsync -m shell -a "ls -l /etc/rsync.password"

   ansible rsync -m shell -a "cat /etc/rsync.password"

 

   (5)配置所有服务器的rsync连接密码文件

   ansible benet -m copy -a "content='1' dest=/etc/server.pass owner=root group=root mode=600"

 

   (6)测试:备份WEB的httpd.conf配置文件

   ansible web -m shell -a "rsync -avz --password-file=/etc/server.pass /etc/httpd/conf/httpd.conf rsync_backup@192.168.8.40::backup"



5.service(或systemd)

   ansible web -m service -a "name=httpd state=stopped"

   等同于

   ansible web -m shell -a "systemctl stop httpd"

   注释:    

       name  指定服务名

       state 指定服务运行状态

             started   开启服务

             stopped   关闭服务

             reloaded  重载服务

             restarted 重启服务

             enabled   是否开机自启

           

6.group

   在所有清单主机上创建组www,gid 666

   ansible all -m group -a "name=www gid=666"


   在所有清单主机删除组www

   ansible all -m group -a "name=www gid=666 state=absent"


7.user

   ansible all -m user -a "name=www"

   ansible web -m shell -a "echo 123 |passwd --stdin www"


8.file

   创建目录,并赋权,更改属主属组(recurse=yes可以由state=directory代替)

   ansible rsync -m file -a "path=/cwb owner=root group=root recurse=yes mode=777"

 

       创建文件

   ansible rsync -m file -a "path=/cwb/test.txt owner=root group=root state=touch  mode=777"

 

9.mount

   ansible nfs -m file -a "path=/nfs owner=root group=root recurse=yes mode=777"

   vim exports

   添加:

   /nfs 192.168.8.0/24(rw,sync,no_root_squash)

   保存退出

 

   ansible nfs -m copy -a "src=exports dest=/etc/exports"

   ansible nfs -m systemd -a "name=nfs state=restarted"

   ansible nfs -m systemd -a "name=rpcbind state=restarted"

 

   挂载nfs目录到web下的/var/www/html

   ansible web -m mount -a "src=192.168.8.30:/nfs path=/var/www/html fstype=nfs state=mounted"

   注释:    

       state 挂载状态

             mounted   挂载

             unmounted 卸载

           

10.script

   在ansible上编写任意测试脚本:

   ansible web -m script -a "/root/test.sh"    


相关文章
|
5月前
|
运维 Shell Linux
ansible汇总(1)
公司的服务器越来越多, 维护一些简单的事情都会变得很繁琐。用shell脚本来管理少量服务器效率还行, 服务器多了之后, shell脚本无法实现高效率运维。这种情况下,我们需要引入自动化运维工具, 对多台服务器实现高效运维。
48 0
|
5月前
|
Kubernetes Docker 容器
ansible汇总(2)
playbook(剧本): 是ansible用于配置,部署,和管理被控节点的剧本。用于ansible操作的编排。 参考:https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html 使用的格式为yaml格式(saltstack,elk,docker,docker-compose,kubernetes等也都会用到yaml格式)
31 0
|
8月前
|
运维 网络安全 Python
ansible-1
ansible-1
26 0
|
9月前
|
网络安全 开发工具
ansible-2
ansible-2
42 1
|
9月前
|
Unix 大数据 网络安全
Ansible详解(1)——认识ansible
Ansible详解(1)——认识ansible
115 0
|
测试技术 Go Apache
|
监控 Shell 网络安全
Ansible 常用
一.前言 在企业中运维工作人员通常需要同时管理几十台甚至几百台主机(虚拟机),如果需要批量修改设置或者做更新操作的话,即便是事先编写好脚本,一台一台的去运行脚本也是非常耗时的,效率也十分低下。
1216 0
|
监控 Python 运维
|
关系型数据库 Linux Shell
|
Shell Apache 数据安全/隐私保护