Ansible自动化运维工具

一、Ansible工具的特点

        Ansible是基于Python语言开发的,它只需要在一台普通的服务器上运行即可,不需要Agent。因为ansible是基于SSH远程管理,而Linux服务器大多离不开SSH,所以ansible不需要为配置工作添加额外的支持。

二、Ansible原理

        Ansible利用推送方式对客户系统加以配置,所有工作都可以在主服务器端完成。其命令机制同样非常强大,允许大家利用商业许可Web UI实现授权管理与配置,可以通过命令或GUI来使用Ansible。运行Ansible作为控制节点,通过Ansible进行管理的则是受控节点。

        Ansible的优点:

                轻量级,更新时只需要在操作机上进行一次更新即可

                采用SSH协议

                不需要客户端安装agent

                批量任务执行可以写成脚本,而且不用分发到远程客户端

                使用Python编写,维护更简单

                去中心化管理

三、Ansible安装配置

        Ansible可以工作在Linux、BSD、Mac OS X等平台,对Python环境的版本最低要求为Python2.6以上。Red Hat、CentOS操作系统可以直接基于YUM工具自动安装,Centos 6或者7安装前需要先安装epel扩展源。

rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install epel-release -y
yum install ansible

           Ansible工具默认主目录为/etc/ansible/,其中hosts文件为被管理主机IP,Ansible.cfg为ansible主配置文件,roles为角色或插件路径,默认为空。

        Ansible远程批量管理,其中执行命令是通过Ad-Hoc来完成,能够快速执行且不需要保存执行的命令。默认hosts文件配置主机列表,可以配置分组,可以定义各种IP及规则。

        Ansible基于多模块管理,常用的模块包括command、shell、script、yum、copy、file、async、docker、cron、mysql_user、ping、sysctl、user、acl、add_host、easy_install、haproxy等。可以使用ansible-doc -l | more查看ansible支持的模块,也可以查看每个模块的帮助文档。

四、Ansible参数详解

        基于Ansible批量管理,需要将被管理的主机IP列表添加到/etc/ansible/hosts文件中。当然,本机也可以是被管理机。

        由于Ansible管理远程服务器基于SSH,在登陆远程服务器执行命令时需要用户名和密码,也可以加入 -k 参数手动输入密码或基于ssh-keygen生成免密钥。

        Ansible主要参数如下:

             -v        -verbose:打印详细模式

             -i PATH        -inventory=PATH:指定host文件路径

              -f NUM        -forks=NUM:指定fork开启同步进程的个数,默认为5

              -m NAME        -module_name=NAME:指定module名称,默认为command

              -a MODULE_ARGS:module模块的参数

              -k        -ask-pass:输入远程被管理端密码

              -sudo        基于sudo用户执行

              -K        -ask-sudo-pass:提示输入sudo密码与sudo一起使用

              -u USERNAME        -user=USERNAME:指定执行用户

              -C        --check:测试执行过程,不改变真实内容,相当于预演

              -T         TIMEOUT:执行命令超时时间,默认为10s

              --version        查看Ansible版本信息

罗列一些操作,希望对您有所帮助

1.生成私钥:ssh-keygen

2.向主机分发私钥:ssh-copy-id hostname@ipaddr

3.测试主机连通性:ansible hostname -m ping

4.远程主机执行命令:ansible hostname -m command -a 'cat /path/filename'

5.远程主机调用shell:ansible hostname shell -a 'cat /path | grep filename'

6.复制文件:ansible hostname -m copy -a 'src=/path/filename dest=path'

7.给定内容生成文件并指定权限:ansible hostname -m copy -a 'content="body" dest=/path mode=777'

8.修改文件内容,选择覆盖备份:ansible hostname -m copy -a 'content="body" backup=yes dest=/path mode=777'

9.创建目录:ansible hostname -m file -a 'path=/path state=directory'

10.创建链接文件:ansible hostname -m file -a 'path=/path src=filename state=link'

11.删除文件:ansible hostname -m file -a 'path=/path state=absent'

12.获取远程主机文件(dest用来存放文件的目录。src是远程拉取的文件,必须是一个file,不能是目录):ansible hostname -m fetch -a 'src=/path/filename dest=/path'

13.添加任务计划:ansible hostname -m cron -a 'name="ntp update every 5 min" minute=*/5 job="sbin/ntpdate 172.17.0.1 &> /dev/null"'

14.删除任务计划:ansible hostname -m shell -a 'crontab -l'

nasible hostname -m cron -a 'name="df everyday" jour=15 job="df -lh >> /tmp/disk_total &> /dev/null" state=absent'

15.安装软件包:ansible hostname -m yum -a 'name=servername state=present'

16.开启服务并开启自动启动:ansible hostname -m service -a 'name=servername state=started enabled=ture'

17.添加一个用户并指定其uid:ansible hostname -m user -a 'name=username uid=id'

18.创建组:ansible hostname -m group -a 'name =groupname gid=id'

19.将本机的脚本在被管理主机上执行,scirpt直接指定脚本的路径即可:ansible hostname -m script -a '/path/filename'

20.用命令获取变量的值:ansible hostname -m setup -a 'filter="*men*"'

21.保存信息并自动生成一个以被管理主机的名字的文件:ansible hostname -m setup -a 'filter="*men*" --tree /path'

你可能感兴趣的:(运维,ansible,服务器)