本文所有资料和实例是结合官方文档,以及自己实际测试所得。
原始资料:http://ansible.cc/docs/
测试时所用系统centos6u2,使用python2.6.6,所用账户为yakamoz,yakamoz具有无密码使用sudo命令的权限
一、ansible 安装
1、软件包安装
EPEL已经提供了ansible所需的所有支持软件包,所以在这里使用epel源进行安装:
$sudo rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
安装ansible
$sudo yum install ansible -y
===============================================================================
Package Arch Version Repository Size
===============================================================================
Installing:
ansible noarch 1.0-1.el6 epel 336 k
Installing for dependencies:
PyYAML x86_64 3.10-3.el6 epel 157 k
libyaml x86_64 0.1.3-1.el6 epel 52 k
python-babel noarch 0.9.4-5.1.el6 base 1.4 M
python-crypto x86_64 2.0.1-22.el6 base 159 k
python-jinja2 x86_64 2.2.1-1.el6 base 465 k
python-paramiko noarch 1.7.5-2.1.el6 base 728 k
Transaction Summary
===============================================================================
Install 7 Package(s)
Total download size: 3.3 M
Installed size: 17 M
2、免密钥
在master服务器生成ssh-key,并分发到所有客户端(在这里也许你有更好的方法,至少目前该方法是最简单的实现方式)
$ssh-keygen -t rsa 【一路回车】
$ssh-copy-id -i ~/.ssh/id_rsa.pub【客户端IP地址】
在此过程提示输入客户端密码
3、建立hosts文件
ansible的hosts默认在/etc/ansible/目录中,采用rpm安装的ansible会将该hosts作为范例,其中提示ansible是支持域名和ip两种客户端命名格式的【经过测试是没有问题的】,还介绍了不同的安装分组方法,建议好好看看:
在这里一共两台服务器master和slave,分为两组
$vim /etc/ansbile/hosts
[localhost]
127.0.0.1
[slave]
192.168.30.3
4、测试ansible的使用
在这里使用 ping模块
$ansible slave -i /etc/ansible/hosts -m ping
192.168.30.3 | success >> {
"changed": false,
"ping": "pong"
}
解读:从返回值分析,ansible slave节点192.168.30.3的ping值成功。说明ansible的已经能够使用!
二、基本功能模块测试
1、ansible命令格式
$ansible --help
Usage: ansible <host-pattern> [options]
Options:
-a MODULE_ARGS, --args=MODULE_ARGS
module arguments
-k, --ask-pass ask for SSH password
-K, --ask-sudo-pass ask for sudo password
-B SECONDS, --background=SECONDS
run asynchronously, failing after X seconds
(default=N/A)
-c CONNECTION, --connection=CONNECTION
connection type to use (default=paramiko)
-f FORKS, --forks=FORKS
specify number of parallel processes to use
(default=5)
-h, --help show this help message and exit
-i INVENTORY, --inventory-file=INVENTORY
specify inventory host file
(default=/etc/ansible/hosts)
-l SUBSET, --limit=SUBSET
further limit selected hosts to an additional pattern
--list-hosts dump out a list of hosts matching input pattern, does
not execute any modules!
-m MODULE_NAME, --module-name=MODULE_NAME
module name to execute (default=command)
-M MODULE_PATH, --module-path=MODULE_PATH
specify path(s) to module library
(default=/usr/share/ansible)
-o, --one-line condense output
-P POLL_INTERVAL, --poll=POLL_INTERVAL
set the poll interval if using -B (default=15)
--private-key=PRIVATE_KEY_FILE
use this file to authenticate the connection
-s, --sudo run operations with sudo (nopasswd)
-U SUDO_USER, --sudo-user=SUDO_USER
desired sudo user (default=root)
-T TIMEOUT, --timeout=TIMEOUT
override the SSH timeout in seconds (default=10)
-t TREE, --tree=TREE log output to this directory
-u REMOTE_USER, --user=REMOTE_USER
connect as this user (default=yakamoz)
-v, --verbose verbose mode (-vvv for more)
--version show program's version number and exit
2、模块测试
各模块位置(default=/usr/share/ansible)
各模块使用说明可以用“$ansible-doc 【模块名称】”的方式查询
【copy】
测试文件test.sh
$vim test.sh
#!/bin/sh
Time=`date +"%m-%d %H:%M"`
echo "$Time script testing success!"
测试copy
$ansible all -m copy -a "src=/home/yakamoz/test.sh dest=/tmp/"
192.168.30.3 | success >> {
"changed": true,
"dest": "/tmp/test.sh",
"group": "yakamoz",
"md5sum": "6c366d017bfc9191113141e8deeda7cd",
"mode": "0664",
"owner": "yakamoz",
"secontext": "unconfined_u:object_r:user_tmp_t:s0",
"src": "/home/yakamoz/.ansible/tmp/ansible-1366256450.22-43393541768920/test.sh",
"state": "file"
}
127.0.0.1 | success >> {
"changed": true,
"dest": "/tmp/test.sh",
"group": "yakamoz",
"md5sum": "6c366d017bfc9191113141e8deeda7cd",
"mode": "0664",
"owner": "yakamoz",
"secontext": "unconfined_u:object_r:user_tmp_t:s0",
"src": "/home/yakamoz/.ansible/tmp/ansible-1366256450.68-90526948213754/test.sh",
"state": "file"
}
测试检查
[yakamoz@ansible-slave1 ~]$ ll /tmp/test.sh
-rw-rw-r--. 1 yakamoz yakamoz 75 Apr 17 20:40 /tmp/test.sh
【file】
调用-s 参数,需要客户端能够无密码使用sudo命令;
$ ansible slave -m file -a "dest=/tmp/test.sh mode=755 owner=root group=root" -s
192.168.30.3 | success >> {
"changed": true,
"group": "root",
"mode": "0755",
"owner": "root",
"path": "/tmp/test.sh",
"secontext": "unconfined_u:object_r:user_tmp_t:s0",
"state": "file"
}
【script】
$ ansible slave -m script -a "/tmp/test.sh"
192.168.30.3 | success >> {
"rc": 0,
"stderr": "",
"stdout": "04-17 22:09 script testing success!\r\n"
}
【shell】
$ ansible slave -m shell -a "/tmp/test.sh"
192.168.30.3 | success | rc=0 >>
04-17 22:10 script testing success!
【group】
$ ansible all -m group -a "name=zj state=present" -s
192.168.30.3 | success >> {
"changed": true,
"gid": 501,
"name": "zj",
"state": "present",
"system": "no"
}
127.0.0.1 | success >> {
"changed": true,
"gid": 501,
"name": "zj",
"state": "present",
"system": "no"
}
【user】
$ ansible all -m user -a "name=zj group=zj home=/root/zj state=present" -s
192.168.30.3 | success >> {
"changed": true,
"comment": "",
"createhome": true,
"group": 501,
"home": "/root/zj",
"name": "zj",
"shell": "/bin/bash",
"state": "present",
"system": false,
"uid": 501
}
127.0.0.1 | success >> {
"changed": true,
"comment": "",
"createhome": true,
"group": 501,
"home": "/root/zj",
"name": "zj",
"shell": "/bin/bash",
"state": "present",
"system": false,
"uid": 501
}
【yum】
可以提供的status:absent,present,installed,removed,latest
ansible slave -m yum -a "name=httpd state=latest" -s
192.168.30.3 | success >> {
"changed": true,
"msg": "Warning: RPMDB altered outside of yum.\n",
"rc": 0,
"results": [
"\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nUpdating:\n httpd x86_64 2.2.15-26.el6.centos base 821 k\nUpdating for dependencies:\n httpd-tools x86_64 2.2.15-26.el6.centos base 72 k\n\nTransaction Summary\n================================================================================\nUpgrade 2 Package(s)\n\nTotal download size: 893 k\n\nUpdated:\n httpd.x86_64 0:2.2.15-26.el6.centos \n\nDependency Updated:\n httpd-tools.x86_64 0:2.2.15-26.el6.centos \n\n"
]
}
将results结果在echo中显示,结果如下:
================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
httpd x86_64 2.2.15-26.el6.centos base 821 k
Updating for dependencies:
httpd-tools x86_64 2.2.15-26.el6.centos base 72 k
Transaction Summary
================================================================================
Upgrade 2 Package(s)
Total download size: 893 k
Updated:
httpd.x86_64 0:2.2.15-26.el6.centos
Dependency Updated:
httpd-tools.x86_64 0:2.2.15-26.el6.centos
【server】
可以提供的status:running,started,stopped,restarted,reloaded
$ ansible slave -m service -a "name=httpd state=running" -s
192.168.30.3 | success >> {
"changed": true,
"name": "httpd",
"state": "running"
}
二、测试ansible-play
$vim test.yml
---
- hosts: slave
user: yakamoz
sudo: yes
tasks:
- name: no selinux
action: command /usr/sbin/setenforce 0
- name: no iptables
action: service name=iptables state=stopped
- name: success
action: command /bin/bash executable=/tmp/test.sh
$ansible-playbook test.yml -s
PLAY [slave] *********************
GATHERING FACTS *********************
ok: [192.168.30.3]
TASK: [no selinux] *********************
changed: [192.168.30.3]
TASK: [no iptables] *********************
ok: [192.168.30.3]
TASK: [success] *********************
changed: [192.168.30.3]
PLAY RECAP *********************
192.168.30.3 : ok=4 changed=2 unreachable=0 failed=0
检查结果
[root@ansible-slave1 ~]# tail -f /var/log/messages
Apr 18 00:05:51 localhost ansible-setup: Invoked
Apr 18 00:05:52 localhost ansible-command: Invoked with args=/usr/sbin/setenforce 0 executable=None shell=False chdir=None
Apr 18 00:05:53 localhost ansible-service: Invoked with pattern=None state=stopped enabled=None name=iptables arguments=
Apr 18 00:05:53 localhost ansible-command: Invoked with args=/bin/bash executable=/tmp/test.sh shell=False chdir=None
- 浏览: 366254 次
- 性别:
- 来自: 阿里巴巴
最新评论
-
masuweng:
好好好,辛苦了!!
Spring Data JPA 简单介绍 -
masuweng:
Spring Data JPA 简单介绍 -
zhangjianxinjava:
您好,大神本人小白一个最近在研究不知道可否 通过邮箱进行交流, ...
JAVA Metrics度量工具 - Metrics Core -
xzs603:
http://zhengdl126.iteye.com/blo ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
JavaStart:
运行mysql2redis 的install.sh 文件为何提 ...
mysql到redis的复制
相关推荐
6. **验证与测试**:安装完成后,进行基本的验证测试,如查看HDFS是否正常运行,通过`hadoop fs -ls /`命令检查HDFS根目录,或者运行MapReduce示例任务。 总结来说,通过Ansible自动化安装Hadoop集群,可以极大地...
6. 确保可以使用Ansible连接到远程服务器,运行`ansible all -m ping`测试连接。 7. 创建一个Ansible项目目录,如`mkdir ansible-openserver`,并在其中编写任务文件。 8. 在任务文件中,比如`start.yml`,使用...
标题中的“利用ansible安装keepalived和haproxy集群”是指使用自动化运维工具Ansible来部署高可用性负载均衡解决方案,其中包括Keepalived和HAProxy两个关键组件。在这个过程中,我们将探讨如何通过Ansible剧本...
本篇文章将详细讲解如何在没有网络连接的环境中,即离线状态下,在CentOS 7.9系统上安装Ansible 2.9。 首先,离线安装的关键在于提前准备好所有必要的软件包。在描述中提到的“CentOS7.9-ansible2.9离线安装包”很...
然后,测试一个简单的命令,如`ping`模块,以验证Ansible是否安装成功: ```bash ansible all -m ping ``` 5. **额外的步骤**: 如果Ansible依赖的Python库(如`pyOpenSSL`, `paramiko`等)也需要离线安装,你...
此zip包是安装ansible测试使用所需的tar包
### 自动化工具Ansible安装与使用详解 #### 一、引言 随着IT系统规模的不断扩张,手工管理服务器的方式越来越难以满足高效运维的需求。在这种背景下,Ansible作为一种轻量级、易于部署且功能强大的自动化运维工具...
8. **执行测试**:编写一个简单的playbook,如复制文件到远程主机,然后运行这个playbook来验证Ansible是否正常工作。 通过这个"ansible源码安装所有工具包和脚本"的压缩包,你可以快速搭建起一个本地的Ansible环境...
配置完成后,可以通过以下命令来测试配置是否正确以及Ansible是否可以成功连接到目标服务器: ``` # ansible --version # ansible all -m ping ``` 如果配置正确,那么Ansible将会返回所有目标服务器的响应状态。 ...
kitchen-ansible, 用于测试厨房的Ansible Provisioner 厨房 ansible 用来Ansible的Test Provisioner 。provisioner通过 .kitchen.yml &调用 ansible-playbook 中的属性来传递Ansible存储库。它在
版本号2.7;适用于centos7.3及其以上的环境 离线安装ansible 把安装包放到/data目录并解压 tar xvf ansible_packages.tar.gz rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm...测试安装ansible yum install ansible -y
ansible-test, 面向人类的Ansible测试框架 Ansible测试:Ansible局部测试框架ansible测试是在本地 Docker 映像上测试自动化的工具。 你可以把它看作是厨师厨房的一个瘦版。$ cd/my/ansible/repository$ ansibl
最后,验证Ansible的安装是否成功,通常通过运行一个简单的命令测试。 自动化运维的引入解决了传统手动运维的效率低下和兼容性问题。通过自动化,可以跨不同的操作系统执行任务,无需每次都手动输入密码(通过SSH...
7. 测试Ansible安装是否成功,可以尝试运行简单的ping模块来验证。 通过以上步骤,即使在离线环境下,也能成功安装并使用Ansible 2.9.9版本。离线安装的关键在于提前准备和正确配置所有的依赖项,以确保Ansible能...
Linux运维-运维课程d1-自动化工具ansible概述与常用模块-05-ansible安装与连通性测
3. 验证连接:使用`ansible all -m ping`命令测试所有节点的连通性。 三、Kubernetes依赖安装 在所有目标节点上,你需要安装以下Kubernetes相关依赖: - Docker:作为容器运行时,确保安装最新稳定版。 - kubeadm、...
包括安装winrm模块和配置Windows PowerShell,以及如何执行连接测试确保Ansible可以成功连接到Windows系统。 ### 结论 这份指南为用户提供了全面的Ansible Tower安装、配置和管理知识,使得用户可以高效地利用...
ansible-sample-tdd, 利用ServerSpec实现Ansible的测试驱动开发 这是样品 ansible-sample-tdd利用ServerSpec实现Ansible的测试驱动开发。 这是样品ServerSpec是一个基于 ruby的测试框架。通知如果你想在其他项目中...
你可以使用`ansible`命令测试与各主机的连接,如`ansible all -m ping`,以及执行远程命令,如`ansible all -m command -a 'useradd user10'`来创建新用户。 需求一:创建`/data`目录,并设置权限。这个操作可以...