自动化运维工具ansible的简单使用

准备两台机器,一台作为服务端,一台作为客户端

1、在其中一台服务端上安装ansible

[[email protected] ~]# yum install -y epel-release

[[email protected] ~]# yum install -y ansible

2、配置密钥

在服务端生成密钥对:

[[email protected] ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

7e:90:5c:3b:e2:71:4d:ed:e8:fc:ed:7b:21:42:c5:43 [email protected]

The key‘s randomart image is:

+--[ RSA 2048]----+

|            oE   |

|             =   |

|          . o o  |

|       . o = o   |

|        S = o .  |

|       o = = . . |

|        o . + . .|

|         .   . ..|

|              .o=|

+-----------------+

把公钥(id_rsa.pub)内容放到对方机器的/root/.ssh/authorized_keys,本机也要操作cat id_rsa.pub >>authorized_keys.

设置权限:chmod 600 authorized_keys

关闭selinux和iptables

3、测试服务端能ssh连接客户端

/*如报错msg则安装libselinux-python包*/

4、修改ansible配置文件

vim /etc/ansible/hosts

添加

[testhosts]

127.0.0.1

192.168.44.131

保存退出

ansible默认使用root用户登录远程服务,如生产机上环境进行了安全加固不允许root直接登录,而许多命令又需要root用户来执行,那么可以通过一个普通账户先登录,再su切换到root执行,希望在通过ansible执行的时候不需要交互输入密码,而是直接执行后的输出结果。

那么可从官网信息了解到,除了ansible_ssh_user、ansible_ssh_pass变量外,还为su切换提供了ansible_su_pass变量,通过该变量我们可以把root密码直接写到配置文件中。具体如下:

[[email protected] ~]# cat /etc/ansible/hosts

[testhosts]

192.168.44.134 ansible_ssh_user=test ansible_ssh_pass=111111 ansible_su_pass=*I2145

192.168.44.135 ansible_ssh_user=test ansible_ssh_pass=xyz123  ansible_su_pass=mn1Pokm

192.168.44.136 ansible_ssh_user=amos ansible_ssh_pass=asdf ansible_su_pass=xyzp)okm

5、在服务端使用ansible远程执行命令

[[email protected] ~]# ansible 192.168.44.131 -m command -a "w"

192.168.44.131 | SUCCESS | rc=0 >>

10:40:12 up 50 min,  4 users,  load average: 0.00, 0.04, 0.08

USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT

root     tty1                      09:49   50:20   0.01s  0.01s -bash

root     pts/0    192.168.44.1     09:50    4.00s  0.10s  0.03s ssh 192.168.44.131

root     pts/1    192.168.44.131   10:35    4.00s  0.46s  0.00s ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -tt 192.168.44.131 /bin/sh -c ‘/usr/bin/python /root/.ansible/tmp/ansible-tmp-1490020811.62-276287230088127/command.py; rm -rf "/root/.ansible/tmp/ansible-tmp-1490020811.62-2762872

root     pts/3    192.168.44.131   10:40    0.00s  0.10s  0.02s w

/*如报错msg则安装libselinux-python包*/

[[email protected] ~]# ansible 192.168.44.131 -m shell -a "hostname"

192.168.44.131 | SUCCESS | rc=0 >>

database

[[email protected] ~]# ansible 192.168.44.131 -m shell -a "cat /etc/passwd |grep root"

192.168.44.131 | SUCCESS | rc=0 >>

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

shell支持带管道的命令,command是不支持的

shell能实现的功能command不一定能实现,command能实现的功能shell一定能实现。

6、ansible拷贝目录或文件:

[[email protected] ~]# ansible 192.168.44.129 -m copy -a "src=/etc/ansible dest=/tmp/ansibletest owner=root group=root mode=0644"

192.168.44.129 | SUCCESS => {

"changed": false,

"dest": "/tmp/ansibletest/",

"src": "/etc/ansible"

}

7、远程执行脚本

1)首先创建一个脚本

[[email protected] ~]# vim /tmp/test.sh

2)把脚本分发到各个机器上

[[email protected] ~]# ansible 192.168.44.129 -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"

192.168.44.129 | SUCCESS => {

"changed": true,

"checksum": "36b1098c7103132b8b595e740a603b67f62daf18",

"dest": "/tmp/test.sh",

"gid": 0,

"group": "root",

"mode": "0755",

"owner": "root",

"path": "/tmp/test.sh",

"secontext": "unconfined_u:object_r:admin_home_t:s0",

"size": 46,

"state": "file",

"uid": 0

}

3)批量执行该shell脚本

[[email protected] ~]# ansible 192.168.44.129 -m shell -a "src=/tmp/test.sh"

192.168.44.129 | SUCCESS | rc=0 >>

8、ansible实现任务计划

1)添加任务计划

[[email protected] ~]# ansible 192.168.44.129 -m cron -a "name=‘test cron‘ job=‘/bin/bash /tmp/test.sh‘ weekday=6"

192.168.44.129 | SUCCESS => {

"changed": true,

"envs": [],

"jobs": [

"test cron"

]

}

————————————————————————

[[email protected] ~]# ansible 192.168.44.129 -m cron -a "name=‘test cron‘ job=‘/bin/bash /tmp/test.sh‘ day=‘1-10‘ weekday=6"

192.168.44.129 | SUCCESS => {

"changed": true,

"envs": [],

"jobs": [

"test cron"

]

}

[[email protected] ~]# ansible 192.168.44.129 -m cron -a "name=‘test cron‘ job=‘/bin/bash /tmp/test.sh‘ day=‘1,4,10‘ weekday=6"

192.168.44.129 | SUCCESS => {

"changed": true,

"envs": [],

"jobs": [

"test cron"

]

}

————————————————————————

2)删除任务计划

[[email protected] ~]# ansible 192.168.44.129 -m cron -a "name=‘test cron‘ state=absent"

192.168.44.129 | SUCCESS => {

"changed": true,

"envs": [],

"jobs": []

}

其他时间表示:分钟minute,小时hour,日期day,月份month

9、ansible安装rpm包 & 管理服务

[[email protected] ~]# ansible 192.168.44.129 -m yum -a "name=httpd"

192.168.44.129 | SUCCESS => {

"changed": false,

"msg": "",

"rc": 0,

"results": [

"httpd-2.4.6-45.el7.centos.x86_64 providing httpd is already installed"

]

}

[[email protected] ~]# ansible 192.168.44.129 -m yum -a "name=ntp"

192.168.44.129 | SUCCESS => {

"changed": true,

"msg": "",

"rc": 0,

"results": [

"Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirrors.btte.net\n * epel: mirror.premi.st\n * extras: mirrors.btte.net\n * updates: mirrors.btte.net\n * webtatic: uk.repo.webtatic.com\nResolving Dependencies\n--> Running transaction check\n---> Package ntp.x86_64 0:4.2.6p5-25.el7.centos.1 will be installed\n--> Processing Dependency: ntpdate = 4.2.6p5-25.el7.centos.1 for package: ntp-4.2.6p5-25.el7.centos.1.x86_64\n--> Processing Dependency: libopts.so.25()(64bit) for package: ntp-4.2.6p5-25.el7.centos.1.x86_64\n--> Running transaction check\n---> Package autogen-libopts.x86_64 0:5.18-5.el7 will be installed\n---> Package ntpdate.x86_64 0:4.2.6p5-25.el7.centos.1 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package             Arch       Version                       Repository   Size\n================================================================================\nInstalling:\n ntp                 x86_64     4.2.6p5-25.el7.centos.1       updates     547 k\nInstalling for dependencies:\n autogen-libopts     x86_64     5.18-5.el7                    base         66 k\n ntpdate             x86_64     4.2.6p5-25.el7.centos.1       updates      85 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package (+2 Dependent packages)\n\nTotal download size: 699 k\nInstalled size: 1.6 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal                                               58 kB/s | 699 kB  00:12     \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : ntpdate-4.2.6p5-25.el7.centos.1.x86_64                       1/3 \n  Installing : autogen-libopts-5.18-5.el7.x86_64                            2/3 \n  Installing : ntp-4.2.6p5-25.el7.centos.1.x86_64                           3/3 \n  Verifying  : ntp-4.2.6p5-25.el7.centos.1.x86_64                           1/3 \n  Verifying  : autogen-libopts-5.18-5.el7.x86_64                            2/3 \n  Verifying  : ntpdate-4.2.6p5-25.el7.centos.1.x86_64                       3/3 \n\nInstalled:\n  ntp.x86_64 0:4.2.6p5-25.el7.centos.1                                          \n\nDependency Installed:\n  autogen-libopts.x86_64 0:5.18-5.el7  ntpdate.x86_64 0:4.2.6p5-25.el7.centos.1 \n\nComplete!\n"

]

}

示例:

[[email protected] ~]# ansible 192.168.44.129 -m yum -a "name=axel state=installed"

192.168.44.129 | SUCCESS => {

[[email protected] ~]# rpm -qa|grep axel

[[email protected] ~]# rpm -qa|grep axel

axel-2.4-9.el7.x86_64

10、ansible文档的使用

列出所有模块:

[[email protected] ~]# ansible-doc -l

查看指定模块的文档:

[[email protected] ~]# ansible-doc cron

时间: 2024-10-10 00:53:17

自动化运维工具ansible的简单使用的相关文章

自动化运维工具Ansible详细部署 (转载)

自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 ===========================

自动化运维工具——ansible详解案例分享

自动化运维工具--ansible详解案例分享(一)目录ansible 简介ansible 是什么?ansible 特点ansible 架构图ansible 任务执行ansible 任务执行模式ansible 执行流程ansible 命令执行过程ansible 配置详解ansible 安装方式使用 pip(python的包管理模块)安装使用 yum 安装ansible 程序结构ansible配置文件查找顺序ansible配置文件ansuble主机清单ansible 常用命令ansible 命令集a

3.1 自动化运维工具ansible

自动化运维工具ansible 运维自动化发展历程及技术应用 Iaas 基础设施即服务Pass 平台服务SaaS 软件即服务 云计算工程师核心职能 Linux运维工程师职能划分 自动化动维应用场景 文件传输命令执行 应用部署配置管理任务流编排 企业实际应用场景分析 1 Dev开发环境 使用者:程序员功能:程序员开发软件,测试BUG的环境管理者:程序员123 2 测试环境 使用者:QA测试工程师功能:测试经过Dev环境测试通过的软件的功能管理者:运维说明:测试环境往往有多套,测试环境满足测试功能即可

自动化运维工具-Ansible基础

目录 自动化运维工具-Ansible基础 自动化运维的含义 Ansible 基础及安装 Ansible的架构 Ansible的执行流程 ansible配置文件 ansible Inventory(主机清单文件) Ansible ad-hoc ansible常用模块 实战 自动化运维工具-Ansible基础 自动化运维的含义 1.手动运维时代 2.自动化运维时代 3.自动化运维工具给运维带来的好处 Ansible 基础及安装 1.什么是Ansible Ansible是一个自动化统一配置管理工具 2

自动化运维工具Ansible架构部署应用及playbooks简单应用

在日常服务器运维中,我们经常要配置相同的服务器配置,前期我们都是一台一台的去配置,这种方法操作主要应对于服务器数量不多且配置简单的情况还可以继续这样操作,如果我们后期维护几百服务器或者几万服务器呢? 我应该怎样去快速配置服务器呢?如果需要手动的每台服务器进行安装配置将会给运维人员带来许多繁琐而又重复的工作同时也增加服务器配置的异常,至此自动化运维工具解决我们的瓶颈---Ansible工具. Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfeng

自动化运维工具Ansible详细部署

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 =========================================================

自动化运维工具Ansible实战(一)安装部署

1,基本介绍 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:指定操作

自动化运维工具Ansible部署详解与基本使用

一.基础简介 1.Ansible简介 Ansible是一款基于Python开发的自动化运维工具,主要是实现批量系统配置.批量程序部署.批量运行命令.批量执行任务等等诸多功能.Ansible是一款灵活的开源工具,能够很大程度简化运维中的配置管理与流程控制方式,它利用推送方式对客户系统加以配置,这样所有工作都可在主服务器端完成.Asible是基于模块工作的,其本身没有批量部署的能力,总之只要明白Ansible是一款运维自动化的神器就好了~! 2.功能特性 ######################

自动化运维工具ansible的基本应用

在很多场景中我们都需要在多个主机上执行相同的命令或者是做相同的配置工作,此时,为了简化操作,我们可以借助一些自动化的工具来完成我们的需求,这种工具我们称之为自动化运维工具.ansible就是其中之一,下面我们就来用ansible来实现一些简单操作. 下面是ansible可以实现很多工具的功能,框架图如下所示:ansible不能实现操作系统的安装 ansible作者就是早期puppet和func的维护者之一,因为ansible充分吸取了puppet和func的优势,又力图避免他们的劣势. OS P