【美高梅手机版4858】运营自动化,Ansible自动化运转工具使用详解

By admin in 美高梅手机版4858 on 2019年4月2日

 

Ansible主配置文件:/etc/ansible/ansible.cfg
Inventory配置文件:/etc/ansible/hosts

Ansible自动化运转为工人身份具使用详解

一、 ansible 简介

  1. ansible

ansible是新面世的 自动化 运转为工人身份具 , 基于Python研究开发 。
糅合了累累著名运营工具的亮点完结了批量操作系统配置、批量先后的布置、批量运作命令等职能。
仅需在保管工作站上安装 ansible 程序配置被管理控制主机的 IP
新闻,被管理控制的主机无客户端。 ansible 应用程序存在于 epel( 第壹方社区 )
源,信赖于广大 python 组件

美高梅手机版4858 1

2.ansible 特性

模块化 设计 ,调用特定的模块来形成一定职务 ,自身是中央器件,短小精悍 ;

依照Python语言完成,由Paramiko (python 的1个可并发连接 ssh 主机功效库 )
, PyYAML和Jinja二 ( 模板化 ) 三个基本点模块完结;

布局简单,agentless 无客户端工具;

宗旨格局 工作;

援助自定义模块 成效;

支持playbook 剧本,一而再义务按程序安装顺序实现;

希望各类命令具有 幂等性:

3.ansible 架构

ansible core : ansible 自个儿大旨模块

host inventory: 主机库,定义可管理控制的主机列表

connection plugins: 连接插件,一般私下认可基于 ssh 商谈连接

modules:core modules ( 自带模块 ) 、 custom modules ( 自定义模块 )

playbooks :剧本,根据所设定编排的顺序执行到位布署任务

美高梅手机版4858 2

  1. 配置 文件:

(壹)ansible 应用程序的 主配置文件:/etc/ansible/ansible.cfg

(二) Host Inventory 定义管理控制主机 :/etc/ansible/hosts

鲁人持竿 INI风格;中括号中的字符是组名;二个主机可同时属于多个组;

示例:

# Ex 一: Ungrouped hosts, specify before any groupheaders.
间接在其余组的头顶前边钦赐,不属于此外组的主机

green.example.com

blue.example.com

192.168.100.1

192.168.100.10

# Ex 二: A collection of hosts belonging to the’webservers’ group
;一群主机属于三个组,例如定义为 ‘webservers’ 的组

[webservers]

alpha.example.org

beta.example.org

192.168.1.100

192.168.1.110

小心:暗中同意是以 root 用户执行,可是依据 ssh
连接操作要再三输入密码,为便宜能够动用基于 ssh 密钥格局举办认证

贰、 ansible 应用程序命令

  1. ansible-doc命令:获取模块列表,及模块使用格式;

ansible-doc -l :获取列表

ansible-doc -s  module_name :获取内定模块的行使新闻

二.ansible 指令格式

ansible  <host-pattern>  [-f forks] [-m module_name]  [-a
args]

<host-pattern>

指明管控主机,以模式形式表示或者直接给定 IP ,必须事先定义在文件中; all 设置所有

[-f forks]

指明每批管控多少主机,默认为 5 个主机一批次

[-m module_name]

使用何种模块管理操作,所有的操作都需要通过模块来指定

[-a args]

指明模块专用参数; args 一般为 key=value 格式

注意:command模块的参数非为kv格式,而是直接给出要执行的命令即可;

留神: <host-pattern> 私下认可读取 /etc/ansible/hosts
,也得以指明自定义文件路径

-iPATH, –inventory=PATH:指明使用的host inventory文件路径;

常用模块 (module_name) :

1) command:暗中认可模块 ,可粗略。在中远距离主机上举行操作命令

-a  ‘COMMAND’

专注: comand 模块的参数非 key=value 格式,直接交给要实施的授命

[[email protected]
~]# ansible all -m command -a  ‘ifconfig’

2)user:

-a ‘name=  state={present ( 创设 ) |absent ( 删除 ) }  force= (
是或不是强制操作删除家目录 )   system=  uid=  shell= home=’

[[email protected]
~]# ansible all -m user -a ‘name=ansible state=present’

3)group:

-a ‘name= state={present|absent}  gid=  system= ( 系统组 ) ‘

[[email protected]
~]# ansible all -m group -a ‘name=mygroup state=presentsystem=true’

4)cron:

-a  ‘name= state=  minute=  hour= day=  month=  weekday= job=’

[[email protected]
~]# ansible all -m cron -a ‘name=’Time’ state=presentminute=’*/5′
job=’/usr/sbin/ntpdate 172.168.0.1 &> /dev/null”

5)ping:

无参数

[[email protected]
~]# ansible all -m ping

6) file: 文件管理

-a ‘path=  mode= 
owner= group= state={file|directory|link|hard|touch|absent}  src= (link
,链接至何处 ) ‘

[[email protected]
~]# ansible all -m file -a ‘path=/tmp/testdirstate=directory’

[[email protected]
~]# ansible all -m file -a ‘path=/tmp/test.txt state=touchmod=600
owner=user1’

7)copy:

-a ‘dest= ( 远程主机上路径 )   src= ( 本地主机路径 )   content= (
直接指明内容 )  owner=  group=  mode=’

[[email protected]]#
ansible web -m copy -a
‘src=/etc/yum.repos.d/aliyun.repodest=/etc/yum.repos.d/’

8)template

-a  ‘dest= src=\’#\'” content=  owner= group=  mode=’

9)yum:

-a ‘name=  conf_file= ( 指明配置文件 )
 state={present|latest|absent} enablerepo= disablerepo=’       

[[email protected]
~]# ansible all -m yum ‘name=httpd state=present’

10)service:

-a ‘name= state={started|stopped|restarted} enabled= ( 是或不是开机自动运行)   runlevel=’

[[【美高梅手机版4858】运营自动化,Ansible自动化运转工具使用详解。email protected]
~]# ansible all -m service -a ‘name=httpd state=started’

11)shell:

-a ‘COMMAND’   运行 shell 命令

[[email protected]
~]# ansible all -m shell -a echo “123456789” |passwd –stdin user1′

12)script:

-a ‘/PATH/TO/SC宝马X三IPT’ 运维脚本

[[email protected]
~]# ansible all -m script -a ‘/tmp/a.sh’

13) setup:获取钦赐主机的facts 变量 ;

美高梅手机版4858 3

三、 Playbooks 剧本

壹.playbook 协会格式:YAML 语言格式

playbooks 是 ansible
更强硬的布局管理组件,实现基于文本文件编写制定执行的多少个职分,且数十次重复执行

(1)YAML 简介

YAML : YAML Ain’t  Markup Language;  Yet Another Markup Language;

好像于半结构化数据,评释式配置;可读性较高的用来抒发资料系列的格式,易于与脚本语言交互

官方站点:

(2) 语法 格式

①) 任何书记结构都用缩进来标识,能够嵌套

2) 每壹行是2个键值数据 k ey :v alue ,冒号隔开分离。若想在壹行标识供给用 {
} 和 , 分隔格式

3) 列表用 – 标识

  1. inventory参数 :主机库 ssh 参数设置

ansible基于ssh连接inventory中钦赐的中远距离主机时,将以此处的参数钦点的属性进行;

ansible_ssh_port

指定 ssh 端口

ansible_ssh_user

指定 ssh 用户

ansible_ssh_pass

指定 ssh 用户登录是认证密码,明文密码不安��

ansible_sudo_pass

指明 sudo 时候的密码

实例:

[websrvs]

192.168.0.101  ansible_ssh_port=22  ansible_ssh_user=root 
ansible_ssh_pass=xuding

192.168.0.102

留神:在 /etc/ansible/hosts 中向来定义连接时候的密码不安全,一般建议依据ssh 的密钥认证方法达成

3.playbooks

(一) 大旨成分

Tasks 任务、 Variables 变量、 Templates 模板、 Handlers 处理器、 Roles
角色

(二)playbooks 中 定义任务:

– name: task description     注释 描述音讯

module_name: module_args   申明模块:定义 ansible 模块参数

美高梅手机版4858 4

(3) ansible-playbook 执行 命令:

ansible-playbook  <filename.yml> …  [options]

美高梅手机版4858 5

4.playbook— 变量

(①)变量命名:字母、数字和下划线组成,仅能以字母发轫;

(二)变量类别:

一) facts:由长途主机发回的主机 特有的
属性新闻,这几个音讯被保存在ansible变量中;无须 证明 ,可直接调用;

二)自定义变量:

通过命令行传递:ansible-playbook  test.yml  –extra-vars “host=www
user=test”

通过roles传递

三) 主机变量:定义在inventory中的主机之后的变量;
直接传送给单个主机的变量

实例:

[[email protected]
~]# vim /etc/ansible/hosts 中平素定义在主机之后

[web]

192.168.0.101    host=mail

192.168.0.102

192.168.0.103

肆) 组变量:定义在inventory中的组上的变量 ( 例如在暗许的文本
/etc/ansible/hosts 上编辑 )

[group_name:vars]

var1=value

var2=value

专注:组名要优先存在,实例如下:

[websrvs]

192.168.0.101

192.168.0.102

[websrvs:vars]

host=mail

变量使用示例:

[[email protected]~]#
vim useradd.yml

–    hosts: websrvs

remote_user: root

vars:

username: testuser

password: xuding

tasks:

-name: add user

user: name={{ username }} state=present

-name: set password

shell: /bin/echo {{ password }} |/usr/bin/passwd –stdin {{ username }}

注释:

一) {{ }} 调用变量

2) #ansible-playbook /PATH/TO/SOME_YAML_FILE  {
-eVA昂CoraS|–extra-vars=VA本田CR-VS}     变量的再度赋值调用方法

[[email protected]
~]# ansible-playbookuseradd.yml –extra-vars “username=Ubuntu”

5.playbook—  tasks

(1) 条件测试:

在某task后边添加when子句即可兑现标准化测试作用;when语句扶助Jinja贰语法;

    实例 : 当时 RedHat 类别系统时候调用 yum 安装

tasks:

-name: install web server package

yum: name=httpd state=present

when: ansible_os_family == “RedHat”

(2) 迭代: item

在task中调用内置的item变量;在某task前面使用with_items语句来定义成分列表;

tasks:

-name: add four users

user: name={{ item }}  state=present

with_items:

-testuser1

-testuser2

-testuser3

-testuser4

在意:迭代中,列表中的每一种成分得以为字典格式;

实例:

-name: add two users

user: name={{ item.name }}  state=present groups={{ item.groups }}

with_items:

– { name: ‘testuser5’, groups: ‘wheel’ }

– { name: ‘testuser6’, groups: ‘root’ }

6.playbook— handlers: 处理器;触发器

唯有其关切的准绳满意时,才会被触发执行 的天职;

实例:配置文件发出变更触发重启服务

-hosts: websrvs

remote_user: root

tasks:

-name: install httpd

yum:name=httpd state=present

-name: install config file

copy: src=/root/httpd.confdest=/etc/httpd/conf/httpd.conf

notify: restart httpd

-name: start httpd service

service: name=httpd state=started

handlers:

-name: restart httpd

service: name=httpd state=restarted

7.playbook 模板

templates:

用来转移文书文件(配置文件);模板文件中可利用jinja二表明式,表明式要定义在{{}},也足以简简单单地仅执行变量替换;

roles:

roles用于落到实处“代码复用”;

roles以一定的层系型格式协会起来的playbook成分(variables,tasks,
templates, handlers);

可被playbook以role的名字直接实行调用;

用法 :在 roles/ 下建立 [group_name] 子目录,并非一切都要创立;例如:

/etc/ansible/roles/ (在 /etc/ansible/ansible.cfg 定义 roles 目录)

webserver/

files/:此剧中人物中用到的具有文件均放置于此目录中;

templates/:Jinja二模板文件存放地方;

tasks/:任务列表文件;能够有四个,但最少有三个称呼main.yml的文本;

handlers/:处理器列表文件;可以有多少个,但起码有贰个称为main.yml的文书;

vars/:变量字典文件;能够有七个,但起码有2个叫做main.yml的公文;

meta/:此角色的特种设定及注重关系;

选拔 Ansible 高效交付 Docker 容器 

利用Ansible批量管理远程服务器 

Ansible安装配备与简短利用 

在 CentOS 7 中设置并选用自动化学工业具 Ansible 

Ansible和Docker的功力和用法 

Ansible批量搭建LAMP环境

Ansible :三个配置管理和IT自动化工具 

Ansible 的详尽介绍:请点那里
Ansible 的下载地址:请点那里

正文永久更新链接地址:

一、 ansible 简介

  1. ansible ansible是新出现的 自动化 运营工具 , 基于Python研究开发 。
    糅合了数不胜数出名运营工具的…

一、 ansible 简介

运转自动化发展进度及技术运用

概念主机各个艺术:
ip:10.155.55.10
name:linux1
主机组:
[test]
compute1
compute2
compute[2:5]

  1. ansible

IaaS基础设备即服务(相当于卖硬件)
,PaaS平台即服务(卖操作系统),SaaS软件即服务(卖软件)

密钥生成配置
生成:ssh-keygen -t rsa
复制到被管制主机: ssh-copy-id -i
/root/.ssh/id_rsa.pub
root@ip
测试:ssh root@172.16.100.8 ‘date’
日子同步:ntpdate 17二.1陆.0.壹

ansible是新面世的 自动化 运转为工人身份具 , 基于Python研究开发 。
糅合了无数知名运维工具的优点实现了批量操作系统配置、批量先后的铺排、批量周转命令等职能。
仅需在保管工作站上设置 ansible 程序配置被管理控制主机的 IP
消息,被管理控制的主机无客户端。 ansible 应用程序存在于 epel( 第壹方社区 )
源,注重于广大 python 组件

商行实际利用场景分析

ansible-doc -l #查看补助的指令
ansible-doc -s yum #查阅具体的用法

美高梅手机版4858 6

灰度环境(生产条件的一局地)

ansible语法:ansible <host-pattern> [-f forks] [-m module]
[-a args]
-f:运行的线程数
-m:使用的模块
-a:使用的通令

2.ansible 特性

功效:在全量发布代码前将代码的成效面向少量精准用户发表的条件,可根据主机或用户执行灰度公布

大规模模块:
command:命令模块,暗中同意模块
ansible all -a ‘date’

模块化 设计 ,调用特定的模块来完毕一定义务 ,本人是着力零部件,短小精悍 ;

案例:共100台湾学生产服务器,先公布个中的10台服务器,那10台服务器正是灰度服务器

cron:
ansible web -m cron -a ‘minute=”/10″ job=”/bin/echo hello” name=”test
cron job”‘
ansible web -m cron -a ‘minute=”
/10″
sate:present 安装 absent 移除

依照Python语言达成,由Paramiko (python 的叁个可并发连接 ssh 主机功用库 )
, PyYAML和Jinja贰 ( 模板化 ) 多少个重大模块达成;

灰度环境:往往该版本效果改变较大,为力保起见特意先让部分用户优化经验该功效,待那有个别用户选用未有首要题材的时候,再全量发表至具备服务器

user:
ansible web -m user -a ‘name=mysql uid=306 system=yes group=mysql’

安排简单,agentless 无客户端工具;

先后公布

group:
ansible web -m group -a ‘name=mysql gid=306 system=yes’

着力格局 工作;

先后发布须求:

copy:
ansible all -m copy -a ‘src=/ect/fstab dest=/tmp/fstab.ansible
owner=root mode=640’
ansible all -m copy -a ‘content=”Hello Ansible\nHi Mageedu”
dest=/tmp/test.ansible’

援助自定义模块 功效;

无法导致系统故障或导致系统完全不可用

file:设定文件属性,创立链接文件
ansible all -m file -a ‘path=/tmp/fstab.link src=/tmp/fstab.ansible
state=link’

支撑playbook 剧本,一连职务按次序设置顺序达成;

无法影响用户体验

ping:测试连通
ansible all -m ping

瞩望各种命令具有 幂等性:

预发表验证:

service: 管理服务
ansible web -m service -a ‘enabled=true name=httpd state=started’

3.ansible 架构

新本子的代码头阵表到服务器(跟线上环境布署完全相同,只是未连接到调度器)

shell: 相比较command援助管道变量等复杂命令
ansible all -m user -a ‘name=user1’
ansible all -m shell -a ‘echo mageedu | passwd –stdin user1’

ansible core : ansible 本身大旨模块

灰度发表:

script:将当地脚本复制到远程主机,并运维
ansible all -m script -a “test.sh” #仅协理相对路径

host inventory: 主机库,定义可管理控制的主机列表

听大人讲主机,用户,业务

yum: 安装程序包
ansible all -m yum -a “name=zsh state=present”

connection plugins: 连接插件,一般暗许基于 ssh 共商连接

发布路径:

setup: 收集远程主机的facts,在jinja2模板中可以调用
ansible all -m setup -a ‘filter=ansible_ec2_instance_id’

modules:core modules ( 自带模块 ) 、 custom modules ( 自定义模块 )

/webapp/tuangou

  • name: node1
    command: echo “ok!”
    when: ansible_default_ipv4.address == “{{ HA_node1 }}”
    tags:

    • node1
  • name: node2
    command: echo “no!”
    when: ansible_default_ipv4.address == “{{ HA_node2 }}”
    tags:

    • node2

playbooks :剧本,依据所设定编排的一1执行到位布置职责

/webapp/tuangou-1.1

YAML:
http://www.yaml.org
键值对:
序列-
字典{,,}
register:将职分的出口作为变量,然后用于别的职务。
传送变量:ansible-playbook test.yml –extra-vars “hosts=www
user=mageedu”
[web:vars] #组变量
ntp_server=ntp.magedu.com
nfs_server=nfs.magedu.com

美高梅手机版4858 7

/webapp/tuangou-1.2

delegate_to: 委派
委任另3个主机也实行义务

  1. 配置 文件:

发表进程:在调度器上下线一堆主机(标记为maintanance状态)
–> 关闭服务 –> 陈设新本子的应用程序 –> 运营服务 –>
在调度器上启用这一堆服务器

tag:打上标记,执行命令时得以只进行标记部分 #ansible-playbook apache.yml
–tags=”conf”

(一)ansible 应用程序的 主配置文件:/etc/ansible/ansible.cfg

自动化灰度公布:脚本、公布

wait_for:等待 #暗中同意等待300秒,私下认可检查是否started
search_regex:是或不是带有有个别字符串

(二) Host Inventory 定义管理控制主机 :/etc/ansible/hosts

 

dist_sort:去重分类

鲁人持竿 INI风格;中括号中的字符是组名;一个主机可同时属于多个组;

常用自动化运营工具

set_fact:定义变量,不过不可能跨playbooks

示例:

Ansible:python,Agentless,中型小型型应用环境
(管理上百台机械)

迭代:重复性执行任务。调用使用item,定义循环列表使用with_items。

# Ex 壹: Ungrouped hosts, specify before any groupheaders.
直接在其它组的头顶后面钦命,不属于别的组的主机

应用ssh协议远程来举办政管理制,基于key验证,把领导的公钥传到被管制的主机上去,

handler:发生改变用notify触发执行handler.

green.example.com

Saltstack:python,一般需配备agent(代理),执行效能更高 (管理上千台机械)

when:条件语句

blue.example.com

Puppet:ruby,
成效强大,配置复杂,重型,适合大型环境 (管理上百台机械)

templates:模板调用

192.168.100.1

Fabric:python,agentless

roles:使代码段反复调用
目录名同角色名
目录结构固定:
files静态文件
templates jinjia2模板文件
tasks 至少有main.yml文件,定义各tasks
handlers至少有main.yml文件,定义各handlers
vars至少有main.yml文件,定义变量
meta定义倚重关系等信息

192.168.100.10

Chef: ruby,国内使用少

ansible官方文书档案:http://docs.ansible.com/ansible
ansible-playbook
例子:https://galaxy.ansible.com/list\#/roles?page=1&page\_size=10

# Ex 二: A collection of hosts belonging to the’webservers’ group
;一群主机属于1个组,例如定义为 ‘webservers’ 的组

Cfengine

[webservers]

func

alpha.example.org

Ansible简介

beta.example.org

Ansible是二个简易的自动化运营管理工科具,基于Python语言达成,由ParamikoPyYAML五个根本模块营造,可用以自动化安顿应用、配置、编排task(持续交付、无宕机更等)。

192.168.1.100

   Ansible官网:

192.168.1.110

  
github地址:

小心:暗中认可是以 root 用户执行,可是依照 ssh
连接操作要反复输入密码,为便宜能够动用基于 ssh 密钥方式实行认证

特性

二、 ansible 应用程序命令

  模块化:调用特定的模块,实现一定任务,一千五个模块

  1. ansible-doc命令:获取模块列表,及模块使用格式;

  有Paramiko,PyYAML,Jinja②(模板语言)四个关键模块

ansible-doc -l :获取列表

  援助自定义模块

ansible-doc -s  module_name :获取钦点模块的采裁撤息

  基于Python语言完毕

二.ansible 命令格式

  铺排不难,基于python和SSH(默许已设置)免代理,agentless

ansible  <host-pattern>  [-f forks] [-m module_name]  [-a
args]

  安全,基于OpenSSH

<host-pattern>

指明管控主机,以模式形式表示或者直接给定 IP ,必须事先定义在文件中; all 设置所有

[-f forks]

指明每批管控多少主机,默认为 5 个主机一批次

[-m module_name]

使用何种模块管理操作,所有的操作都需要通过模块来指定

[-a args]

指明模块专用参数; args 一般为 key=value 格式

注意:command模块的参数非为kv格式,而是直接给出要执行的命令即可;

  援助playbook编排职分

留神: <host-pattern> 暗中认可读取 /etc/ansible/hosts
,也能够指明自定义文件路径

幂等性:三个使命执行2遍和推行n遍效果同样,不因重复执行带来意料之外景况

-iPATH, –inventory=PATH:指明使用的host inventory文件路径;

  无需代理不信赖PKI(无需ssl)

常用模块 (module_name) :

  可使用其余编制程序语言写模块

1) command:暗许模块 ,可粗略。在长途主机上进展操作命令

  AML格式,编排职责,辅助添加的数据结构

-a  ‘COMMAND’

  较强劲的多层化解方案

留神: comand 模块的参数非 key=value 格式,直接提交要执行的命令

Ansible首要组成都部队分

[root@localhost ~]# ansible all -m command -a  ‘ifconfig’

1:ANSIBLE
PLAYBOOKS:职分剧本(职务集),编排定义Ansible任务集的布局文件,由Ansible顺序
依次执行,平日是JSON格式的YML文件

2)user:

2:INVENTO奥迪Q3Y:Ansible管理主机的清单/etc/ansible/hosts

-a ‘name=  state={present ( 创设 ) |absent ( 删除 ) }  force= (
是还是不是强制操作删除家目录 )   system=  uid=  shell= home=’

3:MODULES:Ansible执行命令的功用模块,多数为停放宗旨模块,也可自定义

[root@localhost ~]# ansible all -m user -a ‘name=ansible
state=present’

4:PLUGINS:模块作用的填补,如再而三类型插件、循环插件、变量插件、过滤插件等,该意义不常用

3)group:

五:API:供第二方先后调用的应用程序编制程序接口

-a ‘name= state={present|absent}  gid=  system= ( 系统组 ) ‘

陆:ANSIBLE:组合INVENTOCR-VY、API、MODULES、PLUGINS的绿框,可以掌握为是ansible命令工
具,其为着力执行工具

[root@localhost ~]# ansible all -m group -a ‘name=mygroup
state=presentsystem=true’

七:Ansible命令执行来源:

4)cron:

U7SE福睿斯,普通用户,即SYSTEM ADMINISTRATO福特Explorer

-a  ‘name= state=  minute=  hour= day=  month=  weekday= job=’

CMDB(配置管理数据库) API 调用

[root@localhost ~]# ansible all -m cron -a ‘name=’Time’
state=presentminute=’*/5′ job=’/usr/sbin/ntpdate 172.168.0.1 &>
/dev/null”

PUBLIC/PRIVATE CLOUD API调用

5)ping:

USER-> Ansible Playbook -> Ansibile

无参数

八:利用ansible达成管理的措施:

[root@localhost ~]# ansible all -m ping

Ad-Hoc 即ansible命令,主要用于一时半刻命令使用情况

6) file: 文件管理

Ansible-playbook 主要用以深刻陈设好的,大型项指标景色,须要有前提的安排性

-a ‘path=  mode= 
owner= group= state={file|directory|link|hard|touch|absent}  src= (link
,链接至何处 ) ‘

九:Ansible-playbook(剧本)执行进度:

[root@localhost ~]# ansible all -m file -a
‘path=/tmp/testdirstate=directory’

将已有编写制定好的任务集写入Ansible-Playbook

[root@localhost ~]# ansible all -m file -a ‘path=/tmp/test.txt
state=touchmod=600 owner=user1’

透过ansible-playbook命令分拆职责集至逐条ansible命令,按预订规则逐条执行

7)copy:

十:Ansible主要操作对象:

-a ‘dest= ( 远程主机上路径 )   src= ( 本地主机路径 )   content= (
直接指明内容 )  owner=  group=  mode=’

HOSTS主机

[root@localhosttmp]# ansible web -m copy -a
‘src=/etc/yum.repos.d/aliyun.repodest=/etc/yum.repos.d/’

NETWO翼虎KING网络设备

8)template

1一:注意事项

-a  ‘dest= src=\’#\'” content=  owner= group=  mode=’

执行ansible的主机壹般称为主要控制端,中控,master或堡垒机

9)yum:

主要控制端Python版本供给二.陆或上述

-a ‘name=  conf_file= ( 指明配置文件 )
 state={present|latest|absent} enablerepo= disablerepo=’       

被控端Python版本小于二.肆亟待安装python-simplejson

[root@localhost ~]# ansible all -m yum ‘name=httpd state=present’

被控端如开启SELinux供给安装libselinux-python

10)service:

windows不能够做为主要控制端

-a ‘name= state={started|stopped|restarted} enabled= ( 是或不是开机自动运维)   runlevel=’

安装

[root@localhost ~]# ansible all -m service -a ‘name=httpd
state=started’

rpm包安装: EPEL源

11)shell:

yum install ansible

-a ‘COMMAND’   运行 shell 命令

编写翻译安装:

[root@localhost ~]# ansible all -m shell -a echo “123456789” |passwd
–stdin user1′

yum -y install python-jinja2 PyYAML python-paramiko python-babel
python-crypto

12)script:

tar xf ansible-1.5.4.tar.gz

-a ‘/PATH/TO/SC猎豹CS陆IPT’ 运转脚本

cd ansible-1.5.4

[root@localhost ~]# ansible all -m script -a ‘/tmp/a.sh’

python setup.py build

一叁) setup:获取钦定主机的facts 变量 ;

python setup.py install

美高梅手机版4858 8

mkdir /etc/ansible

三、 Playbooks 剧本

cp -r examples/* /etc/ansible

一.playbook 协会格式:YAML 语言格式

Git方式:

playbooks 是 ansible
更强大的安插管理组件,完成基于文本文件编写执行的四个职责,且数次重复执行

git clone git://github.com/ansible/ansible.git –recursive

(1)YAML 简介

cd ./ansible

YAML : YAML Ain’t  Markup Language;  Yet Another Markup Language;

source ./hacking/env-setup

接近于半结构化数据,注脚式配置;可读性较高的用来表达资料类别的格式,易于与脚本语言交互

pip安装:
pip是设置Python包的管理器,类似yum

官方站点: http://www.yaml.org

yum install python-pip python-devel

(2) 语法 格式

yum install gcc glibc-devel zibl-devel rpm-bulid openssl-devel

一) 任何书记结构都用缩进来标识,可以嵌套

pip install –upgrade pip

贰) 每壹行是一个键值数据 k ey :v alue ,冒号隔断。若想在1行标识须要用 {
} 和 , 分隔格式

pip install ansible –upgrade

3) 列表用 – 标识

确认安装: ansible –version

  1. inventory参数 :主机库 ssh 参数设置

布局文件

ansible基于ssh连接inventory中钦赐的中远距离主机时,将以此处的参数内定的性质举办;

/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特点,(软连接指向新本子,方便)

ansible_ssh_port

指定 ssh 端口

ansible_ssh_user

指定 ssh 用户

ansible_ssh_pass

指定 ssh 用户登录是认证密码,明文密码不安全

ansible_sudo_pass

指明 sudo 时候的密码

/etc/ansible/hosts 主机清单 ,

实��:

/etc/ansible/roles/ 存放剧中人物的目录

[websrvs]

程序

192.168.0.101  ansible_ssh_port=22  ansible_ssh_user=root 
ansible_ssh_pass=xuding

/usr/bin/ansible
主程序,近日命令执行工具

192.168.0.102

/usr/bin/ansible-doc 查看配置文书档案,模块功效查看工具,相当于man命令

留意:在 /etc/ansible/hosts 中央直机关接定义连接时候的密码不安全,一般建议依照ssh 的密钥认证情势贯彻

/usr/bin/ansible-galaxy(银河)
下载/上传特出代码或Roles模块的官网平台

3.playbooks

/usr/bin/ansible-playbook
定制自动化职务,编排剧本工具/usr/bin/ansible-pull (拉取)远程执行命令的工具

(壹) 大旨要素

/usr/bin/ansible-vault 文件加密工具

Tasks 任务、 Variables 变量、 Templates 模板、 Handlers 处理器、 Roles
角色

/usr/bin/ansible-console 基于Console界面与用户交互的履行工具

(二)playbooks 中 定义职责:

长机清单inventory

– name: task description     注释 描述新闻

Inventory 主机清单

module_name: module_args   注解模块:定义 ansible 模块参数

ansible的重大功用在于批量主机操作,为了省事地使用在那之中的有个别主机,能够在inventory
file中 将其分组命名

美高梅手机版4858 9

/etc/ansible/hosts文件格式

(3) ansible-playbook 执行 命令:

inventory文件服从INI文件风格,中括号中的字符为组名。可以将同1个主机同时归并到四个不等的组中;别的,当假若指标主机使用了非私下认可的SSH端口,还能在主机名称从此选拔冒号加端口号来注解

ansible-playbook  <filename.yml> …  [options]

ntp.magedu.com

美高梅手机版4858 10

[webservers]

4.playbook— 变量

www1.magedu.com:2222

(壹)变量命名:字母、数字和下划线组成,仅能以字母开始;

www2.magedu.com

(二)变量种类:

[dbservers]

1) facts:由长途主机发回的主机 特有的
属性消息,那几个消息被保存在ansible变量中;无须 申明 ,可一向调用;

db1.magedu.com

2)自定义变量:

db2.magedu.com

由此命令行传递:ansible-playbook  test.yml  –extra-vars “host=www
user=test”

db3.magedu.com

通过roles传递

假使主机名称遵循相似的命超级模特式,还足以应用列表的秘诀标识各主机

叁) 主机变量:定义在inventory中的主机之后的变量;
直接传送给单个主机的变量

· 示例:

实例:

[websrvs]

[root@localhost ~]# vim /etc/ansible/hosts 中央直机关接定义在主机之后

www[01:100].example.com

[web]

[dbsrvs]

192.168.0.101    host=mail

db-[a:f].example.com

192.168.0.102

ansible
配置文件

192.168.0.103

Ansible 配置文件/etc/ansible/ansible.cfg
(一般保持私下认可)

肆) 组变量:定义在inventory中的组上的变量 ( 例如在暗许的文书
/etc/ansible/hosts 上编辑 )

[defaults]

[group_name:vars]

#inventory = /etc/ansible/hosts # 主机列表配置文件

var1=value

#library = /usr/share/my_modules/ # 库文件存放目录

var2=value

#remote_tmp = $HOME/.ansible/tmp #一时py命令文件存放在中远距离主机目录

专注:组名要优先存在,实例如下:

#local_tmp = $HOME/.ansible/tmp # 本机的如今命令执行目录

[websrvs]

#forks = 5 # 暗中同意并发数

192.168.0.101

#sudo_user = root # 默认sudo 用户

192.168.0.102

#ask_sudo_pass = True #老是执行ansible命令是不是精晓ssh密码

[websrvs:vars]

#ask_pass = True

host=mail

#remote_port = 22

变量使用示例:

#host_key_checking = False # 检核对应服务器的host_key,提出撤回注释

[root@localhost~]# vim useradd.yml

#log_path=/var/log/ansible.log #日志文件

–    hosts: websrvs

 

remote_user: root

Ansible连串命令

vars:

ansible ansible-doc ansible-playbook ansible-vault

username: testuser

  ansible-console ansible-galaxy ansible-pull

password: xuding

  ansible-doc: 呈现模块帮助

tasks:

ansible-doc [options] [module…]

-name: add user

-a 展现全体模块的文档

user: name={{ username }} state=present

-l, –list 列出可用模块

-name: set password

-s, –snippet显示钦赐模块的playbook片段

shell: /bin/echo {{ password }} |/usr/bin/passwd –stdin {{ username }}

示例:

注释:

ansible-doc –l 列出富有模块

一) {{ }} 调用变量

ansible-doc ping 查看钦赐模块协理用法

2) #ansible-playbook /PATH/TO/SOME_YAML_FILE  {
-eVA卡宴S|–extra-vars=VA汉兰达S}     变量的再一次赋值调用方法

ansible-doc –s ping 查看钦定模块帮忙用法

[root@localhost ~]# ansible-playbookuseradd.yml –extra-vars
“username=Ubuntu”

 

5.playbook—  tasks

ansible

(一) 条件测试:

ansible通过ssh落成配置管理、应用安插、任务履行等职能,建议配置ansible端能根据密钥认证的艺术挂钩各被管制节点

在某task前边添加when子句即可兑现标准化测试功效;when语句支持Jinja二语法;

ansible <host-pattern> [-m module_name] [-a args] (-a加参数)

    实例 : 当时
RedHat美高梅手机版4858,
密密麻麻系统时候调用 yum 安装

–version 展现版本

tasks:

-m module 钦赐模块,暗中同意为command

-name: install web server package

-v 详细进度 –vv -vvv更详细

yum: name=httpd state=present

–list-hosts 展现主机列表,可简写—list

when: ansible_os_family == “RedHat”

-k, –ask-pass 提醒输入ssh连接密码,暗中认可Key验证

(2) 迭代: item

-K, –ask-become-pass 提示输入sudo时的口令

在task中调用内置的item变量;在某task后边使用with_items语句来定义成分列表;

-C, –check 检查,并不实施 (测试)

tasks:

-T, –timeout=TIMEOUT 执行命令的超时时间,暗许10s

-name: add four users

-u, –user=REMOTE_USELX570 执行长途执行的用户

user: name={{ item }}  state=present

    -b, –become 代替旧版的sudo 切换

with_items:

美高梅手机版4858 11

-testuser1

1、环境准备

-testuser2

centos七 1九2.16八.30.110做主要控制端

-testuser3

192.16八.30.100 、1九二.168.30.十7
1九贰.16八.30.11四 做被控端

-testuser4

2、搭建配置ansible

专注:迭代中,列表中的种种成分得以为字典格式;

[root@centos7 ~]# yum -y install
ansible

实例:

美高梅手机版4858 12

-name: add two users

查看版本新闻

user: name={{ item.name }}  state=present groups={{ item.groups }}

美高梅手机版4858 13

with_items:

这其间的ping是ansible的ping模块;

– { name: ‘testuser5’, groups: ‘wheel’ }

清单列表不包蕴本机;

– { name: ‘testuser6’, groups: ‘root’ }

美高梅手机版4858 14

6.playbook— handlers: 处理器;触发器

把要管制的主机到场到主机清单中
etc/ansible/hosts

只有其关心的规格满足时,才会被触发执行 的任务;

美高梅手机版4858 15

实例:配置文件发出转移触发重启服务

 

-hosts: websrvs

[root@centos7 ~]# ansible
192.168.30.100 -m ping

remote_user: root

测试存活性是根据ssh服务的,基于密码和key验证,日常是基于key验证;计划是把ssh的能够表达做好

tasks:

美高梅手机版4858 16

-name: install httpd

 

yum:name=httpd state=present

美高梅手机版4858 17

-name: install config file

 

copy: src=/root/httpd.confdest=/etc/httpd/conf/httpd.conf

建议:在决定主机登录主机的还要,假若不用老是都通过验证登录,则修改配置文件,暗中认可提供YES运转日志的效能,手动注释撤销就行了

notify: restart httpd

[root@centos7 ~]# vim
/etc/ansible/ansible.cfg

-name: start httpd service

美高梅手机版4858 18

service: name=httpd state=started

 

handlers:

在决定端主机生成公钥,把公钥传到3台被操纵端主机上去,落成key验证

-name: restart httpd

美高梅手机版4858 19

service: name=httpd state=restarted

 

7.playbook 模板

能够对主机清单做分组

templates:

美高梅手机版4858 20

用以转移文书文件(配置文件);模板文件中可应用jinja二表明式,表达式要定义在{{}},也得以归纳地仅执行变量替换;

 

roles:

 

roles用于落到实处“代码复用”;

ansible的Host-pattern(主机列表)

roles以一定的层系型格式组织起来的playbook成分(variables,tasks,
templates, handlers);

匹配主机的列表

可被playbook以role的名字直接进行调用;

All :表示拥有Inventory(主机清单)中的全体主机

用法 :在 roles/ 下建立 [group_name] 子目录,并非全体都要创设;例如:

ansible all –m ping

/etc/ansible/roles/ (在 /etc/ansible/ansible.cfg 定义 roles 目录)

* :通配符

webserver/

ansible “*” -m ping

files/:此剧中人物中用到的兼具文件均放置于此目录中;

ansible 192.168.1.* -m ping

templates/:Jinja二模板文件存放地方;

ansible “*srvs” -m ping

tasks/:职分列表文件;能够有多少个,但起码有三个称为main.yml的文本;

或关系

handlers/:处理器列表文件;能够有多少个,但至少有一个誉为main.yml的文本;

ansible “websrvs:appsrvs” -m ping

vars/:变量字典文件;可以有多少个,但最少有三个叫作main.yml的文书;

ansible “192.168.1.10:192.168.1.20” -m ping

meta/:此剧中人物的非凡设定及重视关系;

逻辑与

动用 Ansible 高效交付 Docker 容器 
http://www.linuxidc.com/Linux/2015-10/124233.htm

ansible “websrvs:&dbsrvs” –m ping

使用Ansible批量管理远程服务器 
http://www.linuxidc.com/Linux/2015-05/118080.htm

在websrvs组并且在dbsrvs组中的主机

Ansible安装配置与简单利用 
http://www.linuxidc.com/Linux/2015-07/120399.htm

逻辑非

在 CentOS 7中安装并采用自动化学工业具 Ansible 
http://www.linuxidc.com/Linux/2015-10/123801.htm

ansible ‘websrvs:!dbsrvs’ –m ping

Ansible和Docker的功效和用法 
http://www.linuxidc.com/Linux/2014-11/109783.htm

在websrvs组,但不在dbsrvs组中的主机

Ansible批量搭建LAMP环境
http://www.linuxidc.com/Linux/2014-10/108264.htm

专注:此处为单引号

Ansible :2个布局管理和IT自动化学工业具 
http://www.linuxidc.com/Linux/2014-11/109365.htm

综合逻辑

Ansible
的详细介绍
:请点那里
Ansible
的下载地址
:请点那里

ansible ‘websrvs:dbsrvs:&appsrvs:!ftpsrvs’ –m ping

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133466.htm

正则表明式

美高梅手机版4858 21

ansible “websrvs:&dbsrvs” –m ping

ansible “~(web|db).*\.magedu\.com” –m ping

美高梅手机版4858 22

逻辑与

美高梅手机版4858 23

 

ansible命令执行进度

ansible命令执行进度

  1. 加载本人的配备文件 暗中同意/etc/ansible/ansible.cfg

  2. 加载自己相应的模块文件,如command

  3. 经过ansible将模块或指令生成对应的临时py文件,并将该
    文件传输至远程服务器的附和执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件

  4. 给文件+x执行

  5. 实践并回到结果

  6. 除去方今py文件,sleep 0退出

履市场价格况:

淡紫:执行成功还要不需求做更改的操作

色情:执行成功还要对目的主机做更改

革命:执行破产

 

ansible使用示例

以身作则 sudo 切换身份默许就是root,

以wang用户执行ping存活检查测试

ansible all -m ping -u wang -k

以wang sudo至root执行ping存活体协会检查测(用wang用户连接对方后,sudo到root身份实施操作)

ansible all -m ping -u wang –b -k

以wang sudo至mage用户执行ping存活体组织检查测

ansible all -m ping -u wang –b -k –become-user mage

以wang sudo至root用户执行ls

ansible all -m command -u wang –become-user=root -a ‘ls /root’ -b –k -K

ansible常用模块

Command:在长距离主机执行命令,暗许模块,可忽略-m选项

ansible srvs -m command -a ‘service vsftpd start’

ansible srvs -m command -a ‘echo magedu |passwd –stdin wang’
不成功此命令

美高梅手机版4858 24

不帮助 $VACRUISERNAME < > | ; &
等,用shell模块达成

美高梅手机版4858 25

 

Shell:和command相似,用shell执行命令

vim /etc/ansible/ansible.cfg

美高梅手机版4858 26

1:ansible srv -m shell -a ‘echo magedu
|passwd –stdin wang’

:二:调用bash执行命令 类似 cat
/tmp/stanley.md | awk -F‘|’ ‘{print $一,$二}’ &>/tmp/example.txt
那么些纷纭命令,即便使用shell也说不定会战败,消除办法:写到脚本时,copy到长途,执行,再把须求的结果拉回执行命令的机器

 

Script:运营脚本

脚本情势、用于批量履行脚本

-a “/PATH/TO/SCRIPT_FILE“

snsible websrvs -m script -a f1.sh

在控制端的主机上编制三个本子,可是运营是在被控制端的主机上

美高梅手机版4858 27

 

Copy:从服务器复制文件到客户端,

ansible srv -m copy -a “src=/root/f1.sh dest=/tmp/f2.sh owner=wang
mode=600,backup=yes”

  如指标存在,暗许覆盖,此处钦命先备份

ansible srv -m copy -a “content=‘test content\n’ dest=/tmp/f一.txt”
利用内容,直接生成目的文件

复制模块、批量复制,拷贝文件到长途主机

ansible [主机ip、主机组] -m copy -a “src=源文件 dest=指标路径
owner=全数者 mode=权限 backup=yes/no是还是不是备份”

美高梅手机版4858 28

 

美高梅手机版4858 29

备份文件名称比较长的

美高梅手机版4858 30

 

Fetch(抓取):把远程的主机文件抓取到控住端的主机上,copy相反,目录可先tar

ansible srv -m fetch -a ‘src=/root/a.sh dest=/data/scripts’

美高梅手机版4858 31

 美高梅手机版4858 32

 

File:设置文件属性 (删除文件的效益,创造软硬连接)

ansible srv -m file -a “path(管理的公文)=/root/a.sh owner=wang mode=75五“

ansible web -m file -a ‘src=/app/testfile dest=/app/testfile-link
state=link(软连接)

ansible all -m file -a
‘path(管理的文本)=/data state=absent(递归的删减,缺席)’

美高梅手机版4858 33

1度去除data文件夹

美高梅手机版4858 34

还可以[root@centos7 ~]# ansible all
-m file -a ‘path=/data/test.txt state=touch’

在被控制端的主机上成立test.txt
文件

创设软连接

美高梅手机版4858 35

 

美高梅手机版4858 36

 

Hostname:管理主机名

ansible node1 -m hostname -a “name=websrv”

美高梅手机版4858 37

永久生效,但hosts文件并未有被改

 

Cron:计划职务

[root@centos7 ~]# ansible-doc -s cron
调用模块

帮忙时间:minute,hour,day,month,weekday

ansible srv -m cron -a “minute=*/伍(每四分钟) job(后跟执行的命令)=‘/usr/sbin/ntpdate 17贰.1陆.0.一&>/dev/null’

美高梅手机版4858 38

 

美高梅手机版4858 39

 

name=Synctime” 创造职责

美高梅手机版4858 40

 

美高梅手机版4858 41

ansible srv -m cron -a ‘state=absent name=Synctime’ 删除职责

美高梅手机版4858 42

结果

美高梅手机版4858 43

 

Yum:管理包

ansible srv(all) -m yum -a ‘name=httpd
state=latest(最新版)’ 安装

[root@centos7 ~]# scp
/etc/yum.repos.d/media.repo 192.168.30.107:/etc/yum.

repos.d/media.repo 100% 140 64.3KB/s
00:00

[root@centos7 ~]# ansible all -m yum
-a ‘name=httpd state=present’

美高梅手机版4858 44

ansible srv -m yum -a ‘name=httpd state=absent’ 删除

美高梅手机版4858 45

ansible常用模块

 

Service:管理服务
ansible-doc -s service

ansible all -m service -a ‘name=httpd state=stopped’

ansible all -m service -a ‘name=httpd
state=started’

美高梅手机版4858 46

 

ansible all –m service –a ‘name=httpd state=reloaded’

ansible all -m service -a ‘name=httpd state=restarted’

 

User:管理用户

ansible all-m user -a ‘name=user1 comment=“test user” uid=2048
home=/app/user1 group=root‘

ansible all -m user -a ‘name=sysuser1 system=yes home=/app/sysuser1 ’

ansible all -m user -a ‘name=user一 state=absent remove=yes‘
删除用户及家目录等数码

[root@centos7 ~]# ansible all -m user
-a ‘name=testuser(用户名) system=yes(系统账号) groups(组)=wang,bin shell=/bin/csh’
(shell类型)

美高梅手机版4858 47

 

美高梅手机版4858 48

 

Group:管理组

ansible srv -m group -a “name=testgroup(组名) system=yes“

ansible srv -m group -a “name=testgroup state=absen(删除组)

 

ansible连串命令

ansible-galaxy
(人们写的脚本,下载ansible剧本框架工具,依据本人的要求下载相关的剧中人物)

连接 下载相应的roles

列出全部已设置的galaxy

ansible-galaxy list(列出有哪些装好的剧中人物)

安装galaxy

ansible-galaxy install geerlingguy.redis

删除galaxy

ansible-galaxy remove geerlingguy.redis

ansible-pull

推送命令至远程,效用Infiniti提高,对运行供给较高

Ansible-playbook(剧本)

ansible-playbook hello.yml(剧本文件)

 

cat hello.yml

#hello world yml file

      - hosts(主机清单): websrvs
(主机清单的分组名)

        remote_user: root
(远程连接以root身份)

  tasks:(任务)

      - name: hello world(之后要做的事)

        ommand: /usr/bin/wall hello
world (是-a后的全体的操作)

 

[root@centos7 ~]# vim hello.yml

美高梅手机版4858 49

[root@centos7 ~]# ansible-playbook hello.yml 用次命令执行

 

 Ansible-vault

功能:管理加密解密yml文件

ansible-vault [create|decrypt|edit|encrypt|rekey|view]

ansible-vault encrypt hello.yml 加密

ansible-vault decrypt hello.yml 解密

ansible-vault view hello.yml 查看

ansible-vault edit hello.yml 编辑加密文件

ansible-vault rekey hello.yml 修改口令

ansible-vault create new.yml 成立新文件

Ansible-console:二.0+新增,可交互执行命令,援助tab

root@test (2)[f:10] $

执行用户@当前操作的主机组 (当前组的主机数量)[f:并发数]$

设置并发数: forks n 例如: forks 十

切换组: cd 主机组 例如: cd web

列出当下组主机列表: list

列出全体的内置命令: ?或help

示例:

root@all (2)[f:5]$ list

root@all (2)[f:5]$ cd appsrvs

root@appsrvs (2)[f:5]$ list

root@appsrvs (2)[f:5]$ yum name=httpd state=present

root@appsrvs (2)[f:5]$ service name=httpd state=started

 

 

 

 

 

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有