首页 > 代码库 > ansible学习笔记
ansible学习笔记
一、ansible的基本简介:
ansible式什么?
Ansible 是一个适用于成百上千规模的受控节点的配置管理、应用程序部署、内部服务编排等诸多功能于一身的极为简单的IT运维自动化工具引擎,基于Python开 发。她无需代理,很容易部署,除SSH外没有其他安全基础设施/配置要求。她使用了一个非常简单的语言(YAML),让你可以编写自己的自动化作业脚本。
ansible式怎样工作的?
Ansible连接到受控机,并推送一个称为“Modules”的应用程序到受控机上,Ansible然后在受控机上执行这些模块(默认情况下通过SSH),并在完成时删除她们。
ansible的优点:
1、Playbooks基于YAML,简单易学
2、基于推送,无需在受控机上安装任何程序
3、受控机可以成百上千,管理范围越大成本效能越好
4、内建大量Modules,并可使用“任何语言”开发自定义模块
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
二、如何安装ansible?
其实安装ansible并不复杂,就一条简单的命令就搞定了。我之前尝试了几种方法,看过几个版本的absible安装文档,却都失败了。
下面介绍一下如何安装ansible。
下载新repo到/etc/yum.repos.d/
epel(RHEL 7)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
添加一个epel源就可以了。
然后直接 yum install ansible -y 就可以了!!
三、ansible的一些简单模块命令:
主服务器: 172.25.44.250
准备3台主机来实验用:172.25.44.1 172.25.44.2 172.25.44.3
vim /etc/ansible/hosts
[xiaoze]
172.25.44.1
172.25.44.2
[lzk]
172.25.44.3
在主服务器上: ssh-keygen 生成密钥
[root@server44 ansible]# ssh-copy-id -i root@172.25.44.1 将密钥传给其他3台实验主机
查看ansible支持的模块:ansible-doc -l
查看某一个模块:ansible-doc -s copy
ansible命令应用基础:
语法: ansible <host-pattern> [-f forks] [-m module_name] [-a args]
-f forks:启动的并发线程数;
-m module_name: 要使用的模块;
-a args: 模块特有的参数;
基本测试一下:
command模块:
ansible all -m command -a ‘date‘
查看passwd文件:
cron模块:
让被管理节点生成定期自动运维计划:
让两台主机每十分钟运行一次echo hello world
通过命令 ansible xiaoze -a ‘crontab -l‘ 可查看任务是否生成
移除任务:ansible xiaoze -m cron -a ‘minute="*/10" job="/bin/echo hello world" name="test cron job" state=absent‘
创建用户:user 删除用户后面加上state=absent
删除用户:ansible all -m user -a ‘name="user1" state=absent‘
组管理: group
创建mysql组账户:
创建mysql用户并且加进mysql组里:
copy:
src=http://www.mamicode.com/: 定义本地源文件路径
dest=: 定义远程目标文件路径
content=: 取代src=http://www.mamicode.com/,表示直接用此处指定的信息生成为目标文件
复制/etc/passwd文件到/mnt/下:
content直接生成文件内容:
file:
将复制的文件的属主,属组改为mysql:
ping模块:
service:
管理节点服务和启动状态
如果服务没开启的话,执行以下命令会开启:
shell:
用到管道复杂命令功能时建议用shell
yum:
安装程序包,卸载的话在后面加上state=absent
卸载的话就是: ansible all -m yum -a "name=bind state=absent"
本文出自 “11721816” 博客,请务必保留此出处http://zzkkk.blog.51cto.com/11721816/1851780
ansible学习笔记