ansible学习笔记

一、ansible的基本简介:

  1. ansible式什么?

    Ansible 是一个适用于成百上千规模的受控节点的配置管理、应用程序部署、内部服务编排等诸多功能于一身的极为简单的IT运维自动化工具引擎,基于Python开 发。她无需代理,很容易部署,除SSH外没有其他安全基础设施/配置要求。她使用了一个非常简单的语言(YAML),让你可以编写自己的自动化作业脚本。

  2. ansible式怎样工作的?

    Ansible连接到受控机,并推送一个称为“Modules”的应用程序到受控机上,Ansible然后在受控机上执行这些模块(默认情况下通过SSH),并在完成时删除她们。

  3. ansible的优点:

    1、Playbooks基于YAML,简单易学

    2、基于推送,无需在受控机上安装任何程序

    3、受控机可以成百上千,管理范围越大成本效能越好

    4、内建大量Modules,并可使用“任何语言”开发自定义模块

  4. ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppetcfenginecheffuncfabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。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 [email protected]        将密钥传给其他3台实验主机

查看ansible支持的模块:ansible-doc -l

wKioL1fVXZbCLwF2AADw67hkDfw052.png

查看某一个模块:ansible-doc -s copy

wKiom1fVXenA720PAADk5KcVDhM071.png


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'

wKiom1fVXtyioiOvAABtQd_rNPY797.png

查看passwd文件:

wKiom1fVXzfh6TC5AACmi4NeghY510.png

cron模块:

让被管理节点生成定期自动运维计划:

让两台主机每十分钟运行一次echo hello world

wKiom1fVYCLAv28QAAB69WdtWNY579.png

通过命令 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

wKioL1fVYfjA4_T_AADMR3bZVkw761.png

删除用户:ansible all -m user -a 'name="user1" state=absent'

组管理: group

创建mysql组账户:

wKioL1fVYrvAK9o4AACPA0QIkrs749.png

创建mysql用户并且加进mysql组里:

wKioL1fVY0GSEcaPAADsxnb3TYs501.png

copy:

src=: 定义本地源文件路径

dest=: 定义远程目标文件路径

content=: 取代src=,表示直接用此处指定的信息生成为目标文件

复制/etc/passwd文件到/mnt/下:

wKioL1fVY9OyjiM0AAD1LwCUTTY193.png

content直接生成文件内容:

wKiom1fVZEji_SFxAAD4dwuujWo758.png

file:

将复制的文件的属主,属组改为mysql:

wKiom1fVZUuTF-lPAADidYFTPqY733.png

ping模块:

wKiom1fVZYOwt2knAABpkbz6f8w117.png

service:

管理节点服务和启动状态

wKioL1fVZirTqizfAAB60981DjY299.png

如果服务没开启的话,执行以下命令会开启:

wKioL1fVaBvhlKtOAABrwLkspW4788.png

shell:

用到管道复杂命令功能时建议用shell

wKiom1fVZrKzWjahAAClIpuqhvI275.png

yum:

安装程序包,卸载的话在后面加上state=absent

wKiom1fVZ1XzJtNwAAH5h1q3so0524.png

卸载的话就是: ansible all -m yum -a "name=bind state=absent"


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章