Ansible安装配置及实例

一、简介

ansible 和 saltstack 一样都是基于 Python 开发的,是比 puppet 和 saltstack 更轻量级的运维自动化工具。无服务器端,使用时直接运行命令即可,不需要在被管控主机上安装任何客户端,所以任何一台机器只要安装了 ansible 就可以管控其他主机。基于模块工作,可使用任意语言开发模块。也可使用 yaml 语言定制剧本 playbook;基于SSH工作;可实现多级指挥。

二、安装配置

1、准备工作

准备三台机器 Centos6.5_64,这两台机器都关闭 selinux,清空 iptables 规则并保存。

  • master:192.168.2.71
  • slaver:192.168.2.72
  • slaver:192.168.2.73

2、编辑 hosts 文件

两台都设置,若机器太多,可以通过搭建 DNS,则不用在每台机器上设置这个

  • 192.168.2.71 master.test.com
  • 192.168.2.72 slaver2.test.com
  • 192.168.2.73 slaver3.test.com

3、设置 hostname

在 master 上
[root@tiejiangSRC1 ~]# vim /etc/sysconfig/network
    HOSTNAME=master.test.com

在 slaver 上
[root@tiejiangSRC1 ~]# vim /etc/sysconfig/network
    HOSTNAME=slaver.test.com

4、安装

[root@tiejiangSRC1 ~]# yum install -y epel-release 
[root@tiejiangSRC1 ~]# yum install -y ansible

5、SSH密钥配置

在Ansible服务端生成密钥,并且复制公钥到节点中。
[root@tiejiangSRC1 ~]# ssh-keygen -t rsa    //一路回车下去
[root@tiejiangSRC1 ~]# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

使用ssh-copy-id命令来复制Ansible公钥到节点中
[root@tiejiangSRC1 ~]# ssh-copy-id -i root@192.168.2.72     //输入yes和密码
[root@tiejiangSRC1 ~]# ssh-copy-id -i root@192.168.2.73     //输入yes和密码

6、ansible配置

[root@tiejiangSRC1 ~]# vim /etc/ansible/hosts
    [testhost]
    192.168.2.71
    192.168.2.72
    192.168.2.73

三、ansible 实例

1、远程执行命令

[root@tiejiangSRC1 ~]# ansible testhost -m command -a 'w'
    192.168.2.73 | SUCCESS | rc=0 >>
     12:12:34 up 31 min,  3 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    192.168.2.62     11:41   31:11   0.01s  0.01s -bash
    root     pts/1    192.168.2.62     11:44    2:16   0.00s  0.00s -bash
    root     pts/2    192.168.2.71     12:12    0.00s  0.04s  0.00s /bin/sh -c /usr

    192.168.2.72 | SUCCESS | rc=0 >>
     14:02:14 up 28 min,  2 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    192.168.2.62     13:34    2:44   0.04s  0.04s -bash
    root     pts/1    192.168.2.71     14:02    1.00s  0.10s  0.00s /bin/sh -c /usr

    192.168.2.71 | SUCCESS | rc=0 >>
     13:33:51 up 55 min,  4 users,  load average: 0.83, 0.29, 0.11
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     tty1     :0               12:38   55:56   3.26s  3.26s /usr/bin/Xorg :
    root     pts/0    192.168.2.62     12:42   48:00   0.04s  0.04s -bash
    root     pts/1    192.168.2.71     13:33    1.00s  0.07s  0.00s /bin/sh -c /usr
    root     pts/2    192.168.2.62     13:05    7.00s  4.23s  1.21s /usr/bin/python

注意:"-m" 指定模块名,"-a" 指定相应命令,这样就可以批量执行命令。这里的 testhost 为之前自定义的主机组名。当然我们也可以直接写一个 ip,针对某一台机器来执行命令。如下:

[root@tiejiangSRC1 ~]# ansible 192.168.2.72 -m command -a 'w'
    192.168.2.72 | SUCCESS | rc=0 >>
     14:04:49 up 30 min,  2 users,  load average: 0.00, 0.00, 0.00
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    192.168.2.62     13:34    5:19   0.04s  0.04s -bash
    root     pts/1    192.168.2.71     14:04    0.00s  0.10s  0.00s /bin/sh -c /usr

2、远程执行Shell脚本

[root@tiejiangSRC1 ~]# cat /tmp/test.sh     //创建一个shell脚本
    #!/bin/bash
    echo `date` > /tmp/ansible_shell.log
[root@tiejiangSRC1 ~]# ansible testhost -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"        //把脚本分发到各远程机
[root@tiejiangSRC1 ~]# ansible testhost -m shell -a "/tmp/test.sh"      //批量执行脚本
[root@tiejiangSRC1 ~]# ansible testhost -m shell -a "cat /etc/passwd|wc -l "        //注意:shell 模块,还支持远程执行命令并且带管道

3、拷贝文件和目录

[root@tiejiangSRC1 ~]# ansible testhost -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansibletet.txt owner=root group=root mode=0644"       //拷贝文件
[root@tiejiangSRC1 ~]# ansible testhost -m copy -a "src=/etc/ansible/ dest=/tmp/ansibletest owner=root group=root mode=0644"      //拷贝目录

4、添加计划任务

[root@tiejiangSRC1 ~]# ansible testhost -m cron -a "name='test_cron' job='/bin/touch /tmp/test.txt'  hour='1,5,10' weekday=1"
注意:其他的时间表示:分钟 minute,小时 hour,日期 day,月份 month。

5、删除任务计划

若要删除该 cron 只需要加一个字段 state=absent
[root@tiejiangSRC1 ~]# ansible testhost -m cron -a "name='test_cron' state=absent"

6、yum安装

这里用yum安装ftp工具
[root@tiejiangSRC1 ~]# ansible testhost -m yum -a "name=httpd"

7、服务管理

[root@tiejiangSRC1 ~]# ansible testhost -m service -a "name=httpd state=started enabled=no"       //开启 httpd 服务,并关闭开机启动。

8、文档使用

1)列出所有的模块
    [root@tiejiangSRC1 ~]# ansible-doc -l
2)查看指定模块的文档
K    [root@master ~]# ansible-doc cron                    
    [root@master ~]# ansible-doc service

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何备份你的MySQL数据库

数据库通常会在存储一些有价值的信息。因此,在发生事故或硬件故障时,必须具有可靠的备份以防止数据丢失。

2214
来自专栏康怀帅的专栏

LNMP Docker 安装配置

目标:一条命令建立 LNMP 环境(MySQL、Redis、PHP-fpm、Nginx,etc)。 这里只简单列举单容器运行方式,实际请使用 Docker Co...

2995
来自专栏zingpLiu

Linux用户信息查询

第一行显示当前时间,开机(up)多久,几个用户在系统上的平均负载等; 第二行是各个项目(列名)的说明; 第三行以后,每行代表一个用户。如上,root登录,并取得...

673
来自专栏小白课代表

教程 | 十分钟教你重装系统

打个比方,每个电脑就是一个机器人,每个系统以及启动盘都是不同的遥控器,电脑开机的时候会检索有几个遥控器,一般电脑会直接链接原来存在的系统这个遥控器,开机时按启动...

1243
来自专栏gaoqin31

CentOS 7.0网络配置

企业级Linux发行版CentOS安装过后默认是没有开启网络连接服务的,必须手动启动后才能使用网络服务。最新版CentOS 7.0安装后网络配置文件在/etc/...

922
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Ghost和Nginx创建博客

Ghost是一个轻量级(~7.5MB)的开源博客平台,非常易于使用。Ghost是完全可定制的。互联网上有很多可供Ghost使用的免费或付费的主题。

80
来自专栏北京马哥教育

搭建自己的git 代码服务器

搭建自己的git 代码服务器 git server 安装配置 1、切换到root用户 stevenrao@server:~$ su - root 2、创建g...

4395
来自专栏gaoqin31

Linux系统下强制踢掉登录用户

linux系统root用户可强制踢制其它登录用户,首先可用$w命令查看登录用户信息,显示信息如下:       [root@Wang ~]# w      10...

1274
来自专栏蓝天

一键自动往crontab添加条目脚本

只要将 监控脚本 被监控程序 和重启脚本放在同一个目录下,并将被监控程序运行起来,即可自动添加到crontab中,建议配置mooon提供的process_m...

611
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装和保护phpMyAdmin

phpMyAdmin让用户可以通过Web界面与MySQL进行交互。在本教程中,我们将讨论如何安装和保护phpMyAdmin,以便您可以安全地使用它来管理Ubun...

1436

扫码关注云+社区