Ansible
常见错误 http://afewbug.com/article/26
官方文档 http://docs.ansible.com/ansible/
安装配置 http://sofar.blog.51cto.com/353572/1579894

目录
一、介绍
二、yum安装
三、Ansible配置
四、模块
五、playbook
六、实战演练--用Ansible实现LANMP的安装

注意:以下实验环境均为关闭selinux和清空防火墙配置,需要把/etc/my.cnf 改为/etc/my.cnf.bak

一、介绍
特性
(1)、no agents:不需要在被管控主机上安装任何客户端;
(2)、no server:无服务器端,使用时直接运行命令即可;
(3)、modules in any languages:基于模块工作,可使用任意语言开发模块;
(4)、yaml,not code:使用yaml语言定制剧本playbook;
(5)、ssh by default:基于SSH工作;
(6)、strong multi-tier solution:可实现多级指挥。

优点
(1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
(2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
(3)、使用python编写,维护更简单,ruby语法过于复杂;
(4)、支持sudo。

二、yum安装

yum install -y epel-release
yum install -y ansible

附注:编译安装参考上述链接

三、Ansible配置
(1)SSH免密钥登陆设置具体参考SSH密钥登陆

http://www.cnblogs.com/ImJerryChan/p/6002508.html

(2)ansible配置
主机组配置参考:

# vi  /etc/ansible/hosts
# 在里面增加如下配置增加
[testhost]
127.0.0.1
192.168.75.135

配置解析:
在/etc/ansible/hosts文件里指定被监控的主机
其中testhost为自定义的主机组名。
下面两个ip为组内的机器ip。

(3)简单测试

ansible 192.168.75.135 -m command -a 'w'   或者
ansible testhost -m command -a 'w'

如果结果为如下配置,则配置成功

附注:
错误: "msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"
解决办法: yum install -y libselinux-python

四、模块
五、playbook
这两个部分过两天再补充吧,毕竟现在还没学完呢,路还很长

六、实战演练--用Ansible实现LANMP的安装

(这个也属于一个未完成版,因为在写这篇文章的时候还在敲其余部分的代码,因此这一两天内补上吧,MySQL部分实验没问题)
(一)Mysql

cd /etc/ansible
mkdir mysql_install
mkdir -p mysql_install/roles/{common,delete,install}/{handlers,files,meta,tasks,templates,vars} cd mysql_install/roles
//安装前准备
vi ./common/tasks/main.yml
- name: Install initialization require software
yum: name={{ item }} state=installed
with_item:
- gcc
//安装过程
vi ./install/vars/main.yml
mysql_user: mysql
mysql_port:
mysql_data_dir: /data/mysql
mysql_version: 5.5. ls ./install/templates
/etc/init.d/my.cnf /etc/init.d/mysqld
分别为配置文件以及启动文件,也就是要拷贝进去 ls ./install/files
mysql-5.5..tar.gz
data_mysql.tar.gz
同上,一个小建议就是打包的时候最好到文件/目录所在处再打包,否则如果前面跟了目录的话,会把目录也打包进来的 vi ./install/tasks/copy.yml
- name: Copy MySQL Software To Redhat client
copy: src=mysql-{{ mysql_version }}.tar.gz dest=/usr/local/src/mysql-{{ mysql_version }}.tar.gz owner=root group=root
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Uncompression MySQL Software To Redhat Client
shell: tar zxf /usr/local/src/mysql-{{ mysql_version }}.tar.gz -C /usr/local/
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Copy Data_Dir To Redhat client
copy: src=data_mysql.tar.gz dest=/usr/local/src/data_mysql.tar.gz owner=root group=root
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Uncompression Data_Dir To Redhat Client
shell: tar zxf /usr/local/src/data_mysql.tar.gz -C /
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Copy MySQL Start Script To Redhat Client
template: src=mysqld dest=/etc/init.d/mysqld owner=root group=root mode=
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Copy MySQL Config To Redhat Client
template: src=my.cnf dest=/etc/init.d/my.cnf
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >= vi ./install/tasks/install.yml
- name: Create MySQL User In Redhat Client
user: name={{ mysql_user }} state=present createhome=no shell=/sbin/nologin
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Start MySQL Service In Redhat Client
service: name=mysqld state=started#
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Add Boot Start MySQL Service In Redhat Client
shell: chkconfig --level mysqld on
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >= vi ./install/tasks/delete.yml
- name: Delete MySQL compression Software In Redhat Client
shell: rm -rf /usr/local/src/mysql-{{ mysql_version }}.tar.gz
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >= vi ./install/tasks/main.yml
- include: copy.yml
- include: install.yml
- include: delete.yml
//卸载过程
vi ./delete/vars/main.yml
mysql_user: mysql
mysql_port:
mysql_data_dir: /data/mysql
mysql_version: 5.5.-linux2.-x86_64 vi ./delete/tasks/delete.yml
- name: Stop MySQL Service
shell: ps -ef|grep mysql|grep -v grep|awk '{print $2}'|xargs kill - >>/dev/null >&
ignore_errors: yes
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Delete MySQL Boot Start Script
shell: chkconfig --del mysql
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Delete MySQL Dir
shell: rm -rf /usr/local/mysql
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Delete MySQL User
shell: userdel {{ mysql_user }}
ignore_errors: yes
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Delete MySQL Service Start Script
shell: rm -rf /etc/init.d/mysqld
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=
- name: Delete MySQL Service Config File
shell: rm -rf /etc/init.d/my.cnf
when: ansible_os_family == "RedHat" and ansible_distribution_version|int >= vi ./delete/tasks/main.yml
- include: delete.yml
//MySQL主入口配置文件
cd ../
vi install.yml
---
- hosts: 192.168.75.135
remote_user: root
gather_facts: True
roles:
- common
- install vi delete.yml
---
- hosts: 192.168.75.135
remote_user: root
gather_facts: True
roles:
- delete
完毕
安装MySQL:ansible-playbook install.yml
卸载MySQL:ansible-playbook delete.yml

我的Ansible学习笔记的更多相关文章

  1. ansible学习笔记一

    ansible学习笔记一 参考博客: ansible学习 - 51CTO博客 一.安装 1 .下载epel源 wget -O /etc/yum.repos.d/epel.repo http://mir ...

  2. Ansible 学习笔记

    最近因为需要管理很多台机器,而这些机器又需要频繁重新安装,实在受不了Puppet需要在每个客户机上都安装一遍,于是转头开始学些Ansible.根据这段时间的使用,这个确实是神器,唯一的感觉就是相见恨晚 ...

  3. ansible学习笔记三:playbook和roles

    参考博客: Ansible 系列之 Playbooks 剧本 -飞走不可(博客园) linux运维学习之ansible的playbook及roles的使用 - 51CTO博客 nginx 基于uwsg ...

  4. Ansible学习笔记

    一.Ansible简介 Ansible是一种agentless(基于ssh),可实现批量配置.命令执行和控制,基于Python实现的自动化运维工具. 其特性有: ①模块化:通过调用相关模块,完成指定任 ...

  5. ansible学习笔记二

    Ad-Hoc命令: 所谓Ad-Hoc,简而言之是"临时命令",英文中作为形容词有"特别的,临时"的含义.Ad-Hoc只是官方对Ansible命令的一种称谓. 从 ...

  6. Ansible学习笔记(一):部署管理Windows机器遇到的一些坑

    在给国盛通上海测试环境做Ansible管理Windows服务器的时候,遇到了一些坑,Google解决掉了,特此记录,坑用红色标记. 一.环境说明 1.Ansible管理主机 操作系统:CentOS 7 ...

  7. Ansible学习记录一:Linux下部署

    0.Ansible介绍 Ansible 是一个简单的自动化运维管理工具,可以用来自动化部署应用.配置.编排 task(持续交付.无宕机更新等),采用 paramiko 协议库(fabric 也使用这个 ...

  8. ansible2.7学习笔记系列

    写在前面:ansible的资料网上很多,本人也是参考网上资料,做总结,如有错误,麻烦指出,谢谢. 所谓学习笔记,就是不断成长的过程,也许一段时间后有更深入理解了,就会继续更新笔记. 笔记定位:目前写的 ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. 十個必用的 Vim Plugin

    ◎ The NERD Tree 操作 Vim 時,通常都在 Terminal 底下作用,無法像一般的 GUI    應用程式可以以樹狀目錄來瀏覽檔案. The NERD Tree    是一將檔案目錄 ...

  2. freemarker学习#1

    在工作的过程中遇到了.ftl文件.打开发现里面是一些类似于html的代码,非常好奇这是一种什么样的文件,于是去网上搜了一下,了解到.ftl是Freemarker模板的文件后缀名.将问题转移到了Free ...

  3. 【云安全与同态加密_调研分析(3)】国内云安全组织及标准——By Me

    ◆3. 国内云安全组织及标准◆ ◆云安全标准机构(主要的)◆ ◆标准机构介绍◆ ◆相关标准制定◆ ◆建立的相关模型参考◆ ◆备注(其他参考信息)◆ ★中国通信标准化协会(CCSA) ●组织简介:200 ...

  4. Linux下多个.c文件的编译和Makefile文件

    在编程的时候,我们可以把一个完整程序的每个函数分离出来,写成.c文件,最后再一起编译和链接.这样有利于程序功能模块化,也方便检查代码错误. .h文件:里面编辑该程序需要引用的头文件. #ifndef  ...

  5. (C++) Assertion failed: !"Bad error code", file VMem.c, line 715

    (C++) Assertion failed: !"Bad error code", file VMem.c, line 715 Misc error. myInterface F ...

  6. 函数对象[条款18]---《C++必知必会》

    有时需要一些行为类似于函数指针的东西,但函数指针显得笨拙.危险而且过时(让我们承认这一点).通常最佳方式是使用函数对象(function object)取代函数指针. 与智能指针一样,函数对象也是一个 ...

  7. ACM-ICPC 2018 焦作赛区网络预赛 F. Modular Production Line (区间K覆盖-最小费用流)

    很明显的区间K覆盖模型,用费用流求解.只是这题N可达1e5,需要将点离散化. 建模方式步骤: 1.对权值为w的区间[u,v],加边id(u)->id(v+1),容量为1,费用为-w; 2.对所有 ...

  8. spark2.10安装部署(集成hadoop2.7+)

    这里默认你的hadoop是已经安装好的,master是node1,slaver是node2-3,hdfs启动在node1,yarn启动在node2,如果没安装好hadoop可以看我前面的文章 因为这里 ...

  9. Python3.x:抢票

    Python3.x:抢票 一个妹子叫我帮她买动车票,结果竟然没买到票:好吧,不好意思说买不到票,写个抢票程序来完成吧: 1,Chromediver安装: 因为需要chrome支持页面测试,所以需要安装 ...

  10. SQL Server 对XML数据类型的SQL语句总结

    --创建XMLTable , ) primary key, XMLCol xml); go ------------------------------------------------------ ...