快捷搜索:
来自 67677新澳门手机版 2019-08-11 08:06 的文章
当前位置: 67677新澳门手机版 > 67677新澳门手机版 > 正文

运营自动化,Ansible基础知识

 

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

运转自动化发展进度及手艺利用

概念主机多种方法:
ip:10.155.55.10
name:linux1
主机组:
[test]
compute1
compute2
compute[2:5]

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 172.16.0.1

商场实际利用场景解析

ansible-doc -l #查阅补助的下令
ansible-doc -s yum #翻开具体的用法

灰度情形(生产碰着的一有的)

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

作用:在全量发表代码前将代码的效率面向一点点精准用户宣布的条件,可依据主机或用户实施灰度揭橥

分布模块:
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 移除

灰度情形:往往该版本效果转移非常的大,为保险起见特意先让部分用户优化感受该意义,待那部分用户使用未有根本难题的时候,再全量公布至具有服务器

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

次第发布

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 AnsiblenHi Mageedu" dest=/tmp/test.ansible'

不能够导致系统故障或形成系统完全不可用

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

不能够影响用户体验

ping:测量试验连通
ansible all -m ping

预宣布验证:

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

新本子的代码先宣布到服务器(跟线上意况安插完全同样,只是未联网到调解器)

shell: 相比较command帮忙管道变量等繁杂命令
ansible all -m user -a 'name=user1'
ansible all -m shell -a 'echo mageedu | passwd --stdin user1'

灰度发布:

script:将本地脚本复制到远程主机,并运转
ansible all -m script -a "test.sh" #仅援助相对路线

依赖主机,用户,业务

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

揭橥路线:

setup: 搜罗远程主机的facts,在jinja2模板中能够调用
ansible all -m setup -a 'filter=ansible_ec2_instance_id'

/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

/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

/webapp/tuangou-1.2

delegate_to: 委派
委任另多个主机也推行职责

公布进度:在调节器上下线一群主机(标志为maintanance状态) --> 关闭服务 --> 陈设新本子的应用程序 --> 运转服务 --> 在调整器上启用这一群服务器

tag:打上标识,施行命令时方可只进行标识部分 #ansible-playbook apache.yml --tags="conf"

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

wait_for:等待 #默许等待300秒,私下认可检查是或不是started
search_regex:是还是不是满含某些字符串

 

dist_sort:去重分类

常用自动化运维工具

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

Ansible:python,Agentless,中型小型型应用意况(处理上百台机械)

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

应用ssh协议远程来进展管制,基于key验证,把首长的公钥传到被管制的主机上去,

handler:爆发变动用notify触发实施handler.

Saltstack:python,一般需布置agent(代理),推行效用更加高 (管理上千台机器)

when:条件语句

Puppet:ruby, 作用强大,配置复杂,重型,适合大型情状 (管理上百台机械)

templates:模板调用

Fabric:python,agentless

roles:使代码段频频调用
目录名同剧中人物名
目录结构固定:
files静态文件
templates jinjia2模板文件
tasks 至少有main.yml文件,定义各tasks
handlers至少有main.yml文件,定义各handlers
vars至少有main.yml文件,定义变量
meta定义注重关系等消息

Chef: ruby,国内使用少

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

Cfengine

func

Ansible简介

Ansible是三个简易的自动化运营管理工科具,基于Python语言完毕,由ParamikoPyYAML八个珍视模块营造,可用来自动化布置应用、配置、编排task(持续交付、无宕机更等)。

   Ansible官网:

   github地址:

特性

  模块化:调用特定的模块,完结一定义务,一千多少个模块

  有Paramiko,PyYAML,Jinja2(模板语言)八个重大模块

  帮忙自定义模块

  基于Python语言完成

  安排轻便,基于python和SSH(暗中认可已安装)免代理,agentless

  安全,基于OpenSSH

  协理playbook编排任务

幂等性:三个任务试行1遍和施行n遍效果一样,不因重复施行带来意料之外处境

  没有要求代理不注重PKI(无需ssl)

  可选用另外编制程序语言写模块

  AML格式,编排职务,补助增多的数据结构

  较强劲的多层消除方案

Ansible主要组成都部队分

1:ANSIBLE PLAYBOOKS:职责剧本(职分集),编排定义Ansible职责集的配备文件,由Ansible顺序 依次推行,日常是JSON格式的YML文件

2:INVENTORubiconY:Ansible管理主机的清单/etc/ansible/hosts

3:MODULES:Ansible试行命令的效用模块,大多为停放大旨模块,也可自定义

4:PLUGINS:模块效能的补给,如接二连三类型插件、循环插件、变量插件、过滤插件等,该意义不时用

5:API:供第三方程序调用的应用程序编制程序接口

6:ANSIBLE:组合INVENTO福特ExplorerY、API、MODULES、PLUGINS的绿框,能够知道为是ansible命令工 具,其为大旨试行工具

7:Ansible命令推行来源:

U7SE奥迪Q7,普通用户,即SYSTEM ADMINISTRATO揽胜极光

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

PUBLIC/PRIVATE CLOUD API调用

USER-> Ansible Playbook -> Ansibile

8:利用ansible达成管理的艺术:

Ad-Hoc 即ansible命令,首要用于有时命令使用境况

Ansible-playbook 首要用于深刻规划好的,大型项目标现象,必要有前提的希图

9:Ansible-playbook(剧本)施行进程:

将已有编写制定好的天职集写入Ansible-Playbook

由此ansible-playbook命令分拆职分集至逐个ansible命令,按预约法则逐一试行

10:Ansible首要操作对象:

HOSTS主机

NETWOXC60KING网络设备

11:注意事项

实施ansible的主机一般称为主要调整端,中央调整,master或沟壍机

主要调控端Python版本供给2.6或上述

被控端Python版本小于2.4必要安装python-simplejson

被控端如开启SELinux必要安装libselinux-python

windows不能够做为主要调控端

安装

rpm包安装: EPEL源

yum install ansible

编写翻译安装:

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

tar xf ansible-1.5.4.tar.gz

cd ansible-1.5.4

python setup.py build

python setup.py install

mkdir /etc/ansible

cp -r examples/* /etc/ansible

Git方式:

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

cd ./ansible

source ./hacking/env-setup

pip安装: pip是安装Python包的处理器,类似yum

yum install python-pip python-devel

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

pip install --upgrade pip

pip install ansible --upgrade

确认安装: ansible --version

安插文件

/etc/ansible/ansible.cfg 主配置文件,配置ansible专门的学问特色,(软连接指向新本子,方便)

/etc/ansible/hosts 主机清单 ,

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

程序

/usr/bin/ansible 主程序,一时命令推行工具

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

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

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

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

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

主机清单inventory

Inventory 主机清单

ansible的显要功效在于批量主机操作,为了便利地选择个中的片段主机,能够在inventory file中 将其分组命名

/etc/ansible/hosts文件格式

inventory文件遵守INI文件风格,中括号中的字符为组名。能够将同贰个主机同临时候归并到多个分裂的组中;其它,当若是指标主机使用了非默许的SSH端口,还足以在主机名称从此选拔冒号加端口号来表明

ntp.magedu.com

[webservers]

www1.magedu.com:2222

www2.magedu.com

[dbservers]

db1.magedu.com

db2.magedu.com

db3.magedu.com

假使主机名称遵循相似的命超情势,还足以接纳列表的格局标记各主机

· 示例:

[websrvs]

www[01:100].example.com

[dbsrvs]

db-[a:f].example.com

ansible 配置文件

Ansible 配置文件/etc/ansible/ansible.cfg (一般保持默许)

[defaults]

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

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

#remote_tmp = $HOME/.ansible/tmp #有的时候py命令文件寄放在长途主机目录

#local_tmp = $HOME/.ansible/tmp # 本机的有的时候命令实践目录

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

#sudo_user = root # 默认sudo 用户

#ask_sudo_pass = True #每一回试行ansible命令是不是理解ssh密码

#ask_pass = True

#remote_port = 22

#host_key_checking = False # 检核查应服务器的host_key,建议打消注释

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

 

Ansible类别命令

ansible ansible-doc ansible-playbook ansible-vault

  ansible-console ansible-galaxy ansible-pull

  ansible-doc: 展现模块辅助

ansible-doc [options] [module...]

-a 显示全部模块的文书档案

-l, --list 列出可用模块

-s, --snippet突显钦命模块的playbook片段

示例:

ansible-doc –l 列出富有模块

ansible-doc ping 查看钦赐模块帮助用法

ansible-doc –s ping 查看钦赐模块扶助用法

 

ansible

ansible通过ssh实现配置管理、应用安插、任务执行等职能,建议配置ansible端能根据密钥认证的方法挂钩各被管制节点

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

--version 显示版本

-m module 钦命模块,默认为command

-v 详细经过 –vv -vvv更详实

--list-hosts 显示主机列表,可简写—list

-k, --ask-pass 提醒输入ssh连接密码,默许Key验证

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

-C, --check 检查,并不实践 (测验)

-T, --timeout=TIMEOUT 实践命令的晚点时间,暗许10s

-u, --user=REMOTE_USE陆风X8 施行长途实行的用户

    -b, --become 取代旧版的sudo 切换

图片 1

一、情形筹划

centos7 192.168.30.110做主控端

192.168.30.100 、192.168.30.107 192.168.30.114 做被控端

二、搭建配置ansible

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

图片 2

翻看版本新闻

图片 3

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

清单列表不包括本机;

图片 4

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

图片 5

 

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

测量试验存活性是基于ssh服务的,基于密码和key验证,平常是依据key验证;布署是把ssh的能够表达做好

图片 6

 

图片 7

 

建议:在决定主机登入主机的还要,假若不用老是都由此验证登入,则修改配置文件,暗许提供YES运行日志的效果,手动注释撤消就行了

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

图片 8

 

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

图片 9

 

能够对主机清单做分组

图片 10

 

 

ansible的Host-pattern(主机列表)

相配主机的列表

All :表示具有Inventory(主机清单)中的全部主机

本文由67677新澳门手机版发布于67677新澳门手机版,转载请注明出处:运营自动化,Ansible基础知识

关键词: