ansible的安装部署及简单应用
Ansible 是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack。Ansible 是通过 Python 语言开发。Ansible 平台由 Michael DeHaan 创建,他同时也是知名软件 Cobbler 与 Func 的作者。Ansible 的第一个版本发布于 2012 年 2 月。Ansible 默认通过 SSH 协议管理机器,所以 Ansible 不需要安装客户端程序在服务器上。您只需要将 Ansible 安装在一台服务器,在 Ansible 安装完后,您就可以去管理控制其它服务器。不需要为它配置数据库,Ansible 不会以 daemons 方式来启动或保持运行状态。Ansible 可以实现以下目标:
自动化部署应用
自动化管理配置
自动化的持续交付
自动化的(AWS)云服务管理。
根据 Ansible 官方提供的信息,当前使用 Ansible 的用户有:evernote、rackspace、NASA、Atlassian、twitter 等。
1、分别配置各自主机名,并配置hosts文件(能互相解析)
8.20、8.39、8.40
#vim /etc/hosts
# hostname node1.chinasoft.com
vim /etc/hosts
192.168.8.20 node1.chinasoft.com node1
192.168.8.39 node2.chinasoft.com node2
2、在ansible服务器8.40上配置ssh免密码访问
# ssh-keygen
# ssh-copy-id -i .ssh/id_rsa.pub root@node1.chinasoft.com
# ssh-copy-id -i .ssh/id_rsa.pub root@node2.chinasoft.com
测试是否成功
# ssh node1.chinasoft.com 'date';date
# ssh node2.chinasoft.com 'date';date
3、安装ansible服务
# yum install -y epel-relase
# yum install -y ansible1.9
配置服务器组
# vim /etc/ansible/hosts
[webservers]
node1.chinasoft.com
node2.chinasoft.com
[dbserver2]
node1.chinasoft.com
node2.chinasoft.com
4、常用服务及模块的使用
查看命令的帮助文档,如copy
# ansible-doc -s copy
简单的命令测试:
①ping响应
# ansible all -m ping
node2.chinasoft.com | success >> {
"changed": false,
"ping": "pong"
}
node1.chinasoft.com | success >> {
"changed": false,
"ping": "pong"
}
②各服务器时间
# ansible all -a 'date'
node2.chinasoft.com | success | rc=0 >>
Mon Apr 18 20:43:48 CST 2016
node1.chinasoft.com | success | rc=0 >>
Mon Apr 18 20:43:48 CST 2016
③文件拷贝
# ansible dbservers -m copy -a "src=/etc/fstab dest=/root/fstab"
验证拷贝是否成功
# ansible dbservers -a "ls /root"
node1.chinasoft.com | success | rc=0 >>
anaconda-ks.cfg
fstab
install.log
install.log.syslog
node2.chinasoft.com | success | rc=0 >>
anaconda-ks.cfg
fstab
install.log
install.log.syslog
④添加计划任务
# ansible all -m cron -a 'name="custom job" minute=*/3 hour=* day=* month=* weekday=* job="/usr/sbin/ntpdate 192.168.8.102"'
node2.chinasoft.com | success >> {
"changed": false,
"jobs": [
"customjob",
"custom job"
]
}
node1.chinasoft.com | success >> {
"changed": true,
"jobs": [
"custom job"
]
}
# ansible all -a "crontab -l"
node1.chinasoft.com | success | rc=0 >>
#Ansible: custom job
*/3 * * * * /usr/sbin/ntpdate 192.168.8.102
node2.chinasoft.com | success | rc=0 >>
#Ansible: customjob
*/3 * * * * /usr/sbin/ntpdate 192.168.8.102
④在节点中添加组
# ansible-doc -s group
action: group
gid # Optional `GID' to set for the group.
name= # Name of the group to manage.
state # Whether the group should be present or not on the remote host.
system # If `yes', indicates that the group created is a system group.
添加mysql组
# ansible all -m group -a "gid=306 system=yes name=mysql"
node1.chinasoft.com | success >> {
"changed": true,
"gid": 306,
"name": "mysql",
"state": "present",
"system": true
}
node2.chinasoft.com | success >> {
"changed": true,
"gid": 306,
"name": "mysql",
"state": "present",
"system": true
}
# ansible all -a "tail -1 /etc/group"
node2.chinasoft.com | success | rc=0 >>
mysql:x:306:
node1.chinasoft.com | success | rc=0 >>
mysql:x:306:
⑥yum命令的使用
# ansible-doc -s yum
action: yum
conf_file # The remote yum configuration file to use for the transaction.
disable_gpg_check # Whether to disable the GPG checking of signatures of packages being installed. Has an effect only if state is `present' or `latest'.
disablerepo # `Repoid' of repositories to disable for the install/update operation. These repos will not persist beyond the transaction. When specifying multiple repos, separ
enablerepo # `Repoid' of repositories to enable for the install/update operation. These repos will not persist beyond the transaction. When specifying multiple repos, separa
list # Various (non-idempotent) commands for usage with `/usr/bin/ansible' and `not' playbooks. See examples.
name= # Package name, or package specifier with version, like `name-1.0'. When using state=latest, this can be '*' which means run: yum -y update. You can also pass a u
state # Whether to install (`present', `latest'), or remove (`absent') a package.
update_cache # Force updating the cache. Has an effect only if state is `present' or `latest'.
安装httpd软件
# ansible all -m yum -a "name=httpd state=present"
查看是否安装了httpd
# ansible all -a "rpm -q httpd"
node1.chinasoft.com | success | rc=0 >>
httpd-2.2.15-47.el6.centos.4.x86_64
node2.chinasoft.com | success | rc=0 >>
httpd-2.2.15-47.el6.centos.4.x86_64
⑦查看服务状态
# ansible all -a "service httpd status"
node2.chinasoft.com | FAILED | rc=3 >>
httpd 已停
node1.chinasoft.com | FAILED | rc=3 >>
httpd 已停
启动httpd服务,并设置开机自启动
# ansible all -m service -a "state=started enabled=yes name=httpd"
node1.chinasoft.com | success >> {
"changed": true,
"enabled": true,
"name": "httpd",
"state": "started"
}
node2.chinasoft.com | success >> {
"changed": true,
"enabled": true,
"name": "httpd",
"state": "started"
}
# ansible all -a "service httpd status"
node1.chinasoft.com | success | rc=0 >>
httpd (pid 2575) 正在运行...
node2.chinasoft.com | success | rc=0 >>
httpd (pid 2371) 正在运行...
校验是否开机自启动
# ansible all -a "chkconfig --list httpd"
node1.chinasoft.com | success | rc=0 >>
httpd 0:off1:off2:on3:on4:on5:on6:off
node2.chinasoft.com | success | rc=0 >>
httpd 0:off1:off2:on3:on4:on5:on6:off
5、剧本的简单使用
①通过脚本添加组
# vim test.yaml
- hosts: all
remote_user: root
tasks:
- name: add a group
group: gid=1000 name=testgroup1 system=no
- name: execute a commond
command: /bin/date
执行剧本
# ansible-playbook test.yaml
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [node2.chinasoft.com]
ok: [node1.chinasoft.com]
TASK: [add a group] ***********************************************************
changed: [node2.chinasoft.com]
changed: [node1.chinasoft.com]
TASK: [execute a commond] *****************************************************
changed: [node2.chinasoft.com]
changed: [node1.chinasoft.com]
PLAY RECAP ********************************************************************
node1.chinasoft.com : ok=3 changed=2 unreachable=0 failed=0
node2.chinasoft.com : ok=3 changed=2 unreachable=0 failed=0
②通过脚本修改httpd配置文件,修改端口为8080
# vim web.yaml
- hosts: all
remote_user: root
tasks:
- name: ensure apache latest version
yum: state=latest name=httpd
- name: apache configure file
copy: src=/root/httpd.conf dest=/etc/httpd/conf/httpd.conf force=yes
notify:
- restart httpd
handlers:
- name: restart httpd
service: name=httpd state=restarted
执行剧本
# ansible-playbook web.yaml
ansible的安装部署及简单应用的更多相关文章
- saltstack安装部署以及简单实用
一,saltstack简介: SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位. SaltSta ...
- dubbo-admin管理控制台的安装部署(最简单)
Dubbo-admin最简单的安装部署,十分钟就能搞定! 网上找的安装教程虽说详细,但是就是因为详细操作起来而显得繁琐.今天,我帮大家跳过这些繁琐的步骤,简单快捷的安装部署dubbo-admin. 1 ...
- 02_ Flume的安装部署及其简单使用
一.Flume的安装部署: Flume的安装非常简单,只需要解压即可,当然,前提是已有hadoop环境 安装包的下载地址为:http://www-us.apache.org/dist/flume/1. ...
- elasticsearch kibana的安装部署与简单使用(一)
1.先说说es 我早两年使用过es5.x的版本,记得当时部署还是很麻烦,因为es是java写的,要先在机器上部署java环境jvm之类的一堆东西,然后才能安装es 但是现在我使用的是目前最新的7.6版 ...
- Ansible Ubuntu 安装部署
一.安装: $ sudo apt-get install ansible 二.配置: a.基本配置 $ cd /etc/ansible/ $ sudo cp hosts hosts_back 备份一个 ...
- HBase的安装部署以及简单使用
一:下载安装 1.下载安装 2.开启hadoop与zookeeper 3.修改配置文件hbase-env export JAVA_HOME=/opt/modules/jdk1.7.0_67 expor ...
- 071 HBase的安装部署以及简单使用
一:下载安装 1.下载安装 2.开启hadoop与zookeeper 3.修改配置文件hbase-env export JAVA_HOME=/opt/modules/jdk1.7.0_67 expor ...
- 大数据(13) - Spark的安装部署与简单使用
一 .Spark概述 官网:http://spark.apache.org 1. 什么是spark Spark是一种快速.通用.可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校 ...
- Hive安装部署及简单测试 网页《一》
1.首先关闭机器上之前配置的分布式Hadoop 命令: (在hadoop的安装目录中) sbin/stop-dfs.sh 关闭: yarn 命令: sbin/stop ...
随机推荐
- Ubuntu无法进入Windows的NTFS分区
在Ubuntu进入NTFS分区出现问题,无法访问. 不能访问 新加卷 Error mounting /dev/sda8 at /media/zhuxiaoxi/新加卷: Command-line `m ...
- 求n(n>=2)以内的质数/判断一个数是否质数——方法+细节优化
#include <stdio.h> #include <stdlib.h> //判断i是否质数,需要判断i能否被(long)sqrt(i)以内的数整除 //若i能被其中一个质 ...
- 蛋白质结构模型和功能预测:I-TASSER工具的使用
I-TASSER是一款用于预测蛋白质结构和功能的工具,网站链接:https://zhanglab.ccmb.med.umich.edu/I-TASSER/ 具体描述如下: I-TASSER (Iter ...
- poj 2785(折半枚举+二分搜索)
传送门:Problem 2785 题意: 给定 n 行数,每行都有 4 个数A,B,C,D. 要从每列中各抽取出一个数,问使四个数的和为0的所有方案数. 相同数字不同位置当作不同数字对待. 题解: 如 ...
- SQL Server 2008以上误操作数据库恢复方法——日志尾部备份
原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327 问题: 经常看到有人误删数据,或者误操作,特别是update和delete的 ...
- Python Machine Learning-Chapter4
Chapter4 Building Good Training Sets – Data Preprocessing 4.1 Dealing with missing data 如何判断数据框内的数据是 ...
- Css的前世今生
Css的基础知识扫盲 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. HTML的用法没有什么技巧,就是死记硬背,当然你不需要都记下来,能记住20个常用的标签基本上就OK了,其他不常用 ...
- Log4net(一)-——配置文件
一.Log4Net框架介绍 Log4net 是 Apache 下一个开放源码的项目,它是Log4j 的一个克隆版.Log4net中定义了多种日志信息输出模式.它可以根据需要将日志输出到控制台,文本文件 ...
- WebLogic 中的基本概念【转】
完全引用自: WebLogic 中的基本概念 WebLogic 中的基本概念 上周参加了单位组织的WebLogic培训,为了便于自己记忆,培训后,整理梳理了一些WebLogic的资料,会陆续的发出来, ...
- 浅谈分词算法(5)基于字的分词方法(bi-LSTM)
目录 前言 目录 循环神经网络 基于LSTM的分词 Embedding 数据预处理 模型 如何添加用户词典 前言 很早便规划的浅谈分词算法,总共分为了五个部分,想聊聊自己在各种场景中使用到的分词方法做 ...