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 Modules
Customed Modules
Host Iventory
Files
CMDB
PlayBooks
Hosts
roles
Connection Plugins:

特性:

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

安装及程序环境:

程序:

ansible
ansible-playbook
ansible-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=

started
stopped
restarted

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

原创文章,作者:M20-石俊,如若转载,请注明出处:http://www.178linux.com/58695

(0)
M20-石俊M20-石俊
上一篇 2016-11-09 14:07
下一篇 2016-11-09 15:06

相关推荐

  • Linux高级磁盘管理-RAID管理

    在冯诺依曼体系机构中,输入输出要存储的外部磁盘I/O能力实在太低,尤其是企业面对高并发的访问量,在系统内部需要大量调度磁盘的上的网页文件资源,这些都会产生大量的I/O,一个磁盘的I/O能力不管如何提升毕竟是有线的,尤其是机械硬盘;同时为了保障业务的连续性,磁盘故障时必须提供冗余能力,面对这样的实际需求环境,RAID技术产生了,通过组织磁盘阵列方式提供I/O,…

    Linux干货 2016-09-06
  • httpd——事务

    http协议: http/0.9 ,http/1.0 ,http/1.1 ,http/2.0 http协议:stateless          服务器无法持续追踪访问者来源          &nb…

    Linux干货 2016-10-12
  • 用户查找与添加 第四周

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 cp /etc/skel /home/tuser1  chmod -R go=— /home/tuser1 2、编辑/etc/group文件,添加组hadoop…

    Linux干货 2017-02-14
  • 请罗列Linux发行版的基础目录名称命名法则及功用规定

    Linux文件系统 <逻辑视图>     根文件系统(rootfs):         root filesystem     LSB,FHS:(FileSystem Heirache Standard)         /bo…

    Linux干货 2016-10-30
  • Linux发行版、发行版联系与区别

    参考这篇文章<2016年最佳Linux发行版排行榜> http://mt.sohu.com/20160128/n436204298.shtml #1 最好的回归发行版:OpenSUSE OpenSUSE背后的SUSE公司是最古老的Linux企业,成立于Linus Torvalds放出Linux的一年之后。它其实早于Red Hat诞生,同时也是社区…

    Linux干货 2016-08-15
  • 一起学DNS系列(十三)图文详说A、CNAME、MX和NS记录

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/226194    前面用了12个小节对DNS的基础、以及Windows的DNS系统作了较详细的描述,下面的几节主要是说一些有关DNS应用方面…

    2015-03-18