ansible-1

简介: ansible-1

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月前
|
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
|
5月前
|
运维 Shell Linux
ansible汇总(1)
公司的服务器越来越多, 维护一些简单的事情都会变得很繁琐。用shell脚本来管理少量服务器效率还行, 服务器多了之后, shell脚本无法实现高效率运维。这种情况下,我们需要引入自动化运维工具, 对多台服务器实现高效运维。
48 0
|
5月前
|
关系型数据库 MySQL PHP
ansible汇总(3)
roles介绍 roles(角色): 就是通过分别将variables, tasks及handlers等放置于单独的目录中,并可以便捷地调用它们的一种机制。
31 1
|
9月前
|
安全 Shell Linux
|
9月前
|
XML 关系型数据库 应用服务中间件
|
9月前
|
运维 Shell 网络安全
ansible(1)
Ansible概述:是一个配置管理系统(configuration management system),当下最流行的批量自动化运维工具之一.
|
10月前
|
存储 安全 Linux
ansible 初识
Ansible是一个开源配置管理工具,可以使用它来自动化任务,部署应用程序实现IT基础架构。Ansible可以用来自动化日常任务,比如,服务器的初始化配置、安全基线配置、更新和打补丁系统,安装软件包等。
81 1
|
测试技术 Go Apache
|
存储 Ubuntu Shell
|
监控 Shell 网络安全
Ansible 常用
一.前言 在企业中运维工作人员通常需要同时管理几十台甚至几百台主机(虚拟机),如果需要批量修改设置或者做更新操作的话,即便是事先编写好脚本,一台一台的去运行脚本也是非常耗时的,效率也十分低下。
1216 0