第一百零六天 : ansible 入门与进阶

ansible 入门与进阶

Configuration、Command and Control是什么 ? SSH-based configuration management, deployment, and task execution system运维工具的分类:

agent:基于专用的agent程序完成管理功能,puppet, func, zabbix, ...agentless:基于ssh服务完成管理,ansible, fabric, ...

架构:

Ansible Core

Modules:

Core ModulesCustomed ModulesHost IventoryFilesCMDBPlayBooksHostsrolesConnection Plugins:

特性:

模块化:调用特定的模块,完成特定的任务;基于Python语言研发,由Paramiko, PyYAML和Jinja2三个核心库实现;部署简单:agentless;支持自定义模块,使用任意编程语言;强大的playbook机制;幂等性;

安装及程序环境:

程序:

ansibleansible-playbookansible-doc

配置文件:

/etc/ansible/ansible.cfg

主机清单:

/etc/ansible/hosts

插件目录:

/usr/share/ansible_plugins/

首先安装ansible : 这里我使用的是openSUSE 直接安装的

201611052155001

安装完成后配置一下/etc/ansible/hosts 下的主机列表

201611052157001采用的是test组中的的四台主机, 这四台主机已经提前通过ssh-copy-id 命令分发ssh的公钥

201611052158001使用ansible 的ping模块确认主机是否在线.

! 注意 : 在这里我之前给自己挖了个坑, 在 /root/.bashrc 文件中加入了一段命令用于登陆时显示当前主机的IP地址, 造成了ansible 命令执行时总是显示主机不在线, 注释掉就执行正常.

命令语法

ansible <host-pattern> [options]

模块简介 :

ping:探测目标主机是否存活;

命令示例 :

ansible test -m ping

201611052158001

command:在远程主机执行命令;

命令示例 :

ansible test -m command -a "ls -l /tmp"

201611052206001

shell:在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道等 ;[ 推荐使用! ]

注意

command和shell模块的核心参数直接为命令本身;而其它模块的参数通常为“key=value”格式;

参数帮助中参数后面有等于号的通常是此选项的必须模块

使用示例 :

ansible test -m shell -a "hostnamectl | head -1"

201611052207001

copy: C o p i e s f i l e s t o r e m o t e l o c a t i o n s .

用法:

(1) 复制文件

-a "src= dest= "

(2) 给定内容生成文件

-a "content= dest= "

其它参数:mode, owner, group, ...

201611061305001201611061307001

file:S e t s a t t r i b u t e s o f f i l e s

用法:(1) 创建目录:-a "path= state=directory"(2) 创建链接文件:-a "path= src= state=link"(3) 删除文件:-a "path= state=absent“

201611061308001 201611061309001

fetch:F e t c h e s a f i l e f r o m r e m o t e n o d e s

将远程主机上的 文件通过复制保存到本地, 自动按照主机IP进行分类

使用示例 :

ansible test -m fetch -a "src=/root/.bashrc dest=/root/test1"

201611061312001

cron:M a n a g e c r o n . d a n d c r o n t a b e n t r i e s .

为远程主机设定计划任务-a ""minute=hour=day=month=weekday=job=name=user=

201611061321001 201611061321002

state={present|absent} present 为默认的选项, absent显示声明

201611061323002201611061323001

hostname:M a n a g e h o s t n a m e

为远程主机设定主机名name=

yum:M a n a g e s p a c k a g e s w i t h t h e I ( y u m ) p a c k a g e m a n a g e r-a ""(1) name= state= (present|latest|absent)(2) name= state=absent

为远程主机进行软件包管理

service:M a n a g e s e r v i c e s .-a ""name= 软件包名state=

startedstoppedrestarted

enabled=runlevel=

group: A d d o r r e m o v e g r o u p s

增加或删除一个用户组-a ""name=state=system=gid=

user:M a n a g e u s e r a c c o u n t s

管理用户

-a ""name=group=groups=comment=uid=system=shell=expires=home=

setup:G a t h e r s f a c t s a b o u t r e m o t e h o s t s

YAML:YAML is a data serialization format designed for human readability and interaction with scripting languages.

数据结构:key:value- item1- item2- item3{name:jerry, age:21}

PlayBook:

核心元素:

Tasks:任务,由模块定义的操作的列表;Variables:变量Templates:模板,即使用了模板语法的文本文件;Handlers:由特定条件触发的Tasks;Roles:角色;

playbook的基础组件:

Hosts:运行指定任务的目标主机;remote_user:在远程主机以哪个用户身份执行;sudo_user:非管理员需要拥有sudo权限;tasks:任务列表

模块,模块参数:

格式:

(1) action: module arguments(2) module: arguments

Playbook准备 :(不知道为什么, 在openSUSE出现了playbook总是不能正确运行的错误)

201611061445002

201611061445001

201611061447001

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值