Ansible入门

摘要:
自动操作和维护常识操作和维护工作系统安装物理机、虚拟机包安装、配置、服务启动批处理操作程序发布监控操作和维护级别OS配置物理机PXE、,Cobbler(选择多版本操作系统)虚拟机ImageTemplates配置木偶(ruby)saltstack(python)检查cfengine

自动化运维常识

运维工作

  系统安装   物理机、虚拟机

  程序包  安装、配置、服务启动

  批量操作

  程序发布

  监控

运维层次

  OS previsioning

    物理机 PXE、Cobbler(选择多版本操作系统)

    虚拟机 Image Templates

  Configuration

    puppet (ruby)

    saltstack (python)

    chef

    cfengine

  Command and Control

    fabric

预发布验证

  新代码先发布到测试服务器上(配置和生产环境相同,未接入调度器)

程序发布

  不能影响用户体验

  系统不能停机

  不能导致系统故障或造成系统不可用

灰度发布

/webapp/shopping-1.1
/webapp/app/shopping 链接文件指向shopping*

/webapp/shopping-1.2
/webapp/app/shopping

如果1.2版本有问题,修改链接指向1.1,版本回滚

step1:

    在调度器上关闭一批服务器,更改主机模式为maintanance模式(用户Session不会第一时间被调度到其它Real Server上)

step2:

    关闭服务

step3:

    部署新版本的应用程序

step4:

    启动服务

step5:

    在调度器上启用着一批服务器

工具使用

    自动化灰度发布的脚本、平台

运维工具分类

  agent

    puppet

    func

  agentless

    ansible

    fabric

Ansible初识

Ansible入门第1张

集合众多开源工具功能

Configuration 

    cfengine

    Chef

    Puppet

Deployment

    Capistrano

    Fabirc    

Ad-Hoc Tasks 

    Func

Multi-Tier Orchestration

    Juju

    sort of

开发语言python

  核心模块
    paramiko SSH客户端API

    PyYAML 模块编排

    Jinja2 模板语言

核心组件

Ansible入门第2张

SSH协议认证或密码认证

  基于密钥认证

  在inventor中明文指定用户名密码

支持主从模式

  master

    ansible is a ssh client

  salve

    ssh server

支持自定义模块

  Playbook

    细致化安装流

Ansible简单使用

安装

yum源安装

1 yum install -y ansible

编译安装

# 解决依赖

yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto tar -xvzf ansible-2.4.2.tar.gz cd ansible-2.4.2 python setup.py build python setup.py install mkdir /etc/ansible cp -r examples/* /etc/ansible

简介

Name        : ansible
Arch        : noarch
Version     : 2.4.2.0
Release     : 2.el7
Size        : 38 M
Repo        : installed
From repo   : extras
Summary     : SSH-based configuration management, deployment, and task execution system
URL         : http://ansible.com
License     : GPLv3+
Description : 
            : Ansible is a radically simple model-driven configuration management,
            : multi-node deployment, and remote task execution system. Ansible works
            : over SSH and does not require any software or daemons to be installed
            : on remote nodes. Extension modules can be written in any language and
            : are transferred to managed machines automatically.

文件解析

主配置文件

    /etc/ansible/ansible.cfg

主机清单

    /etc/ansible/hosts

角色配置

    /etc/ansible/roles

剧本文件

    /usr/bin/ansible-playbook

卫星主机

    /usr/bin/ansible-galaxy
    /usr/bin/ansible-galaxy-2
    /usr/bin/ansible-galaxy-2.7

使用文档

    /usr/bin/ansible-doc
    /usr/bin/ansible-doc-2
    /usr/bin/ansible-doc-2.7

查看模块及功能参数

ansible-doc -l (非常多,就不列出了)

ansible-doc -s <MODULE_NAME>

简单语法分析

# 语法 ansible <host-pattern> [options]

-f FORKS, --forks FORKS  # 并发执行的线程数,一个线程对应一个HOST

-m MODULE_NAME, --module-name MODULE_NAME  # 指定以哪个模块运行

-a MODULE_ARGS, --args MODULE_ARGS  # 指定模块特有的参数

常用模块

command 远程执行一条命令

cron 添加一条计划任务

    name 每条任务最好指定以个名字
    
    day hour minute month weekday

    job 指定运行的命令

    state 指定命令是生效还是移除 present absent

    user 指定以哪个用户身份执行任务

    ...

    -a 'name=root ... '

user 用户管理

group 组管理

copy 文件复制

    ansible-doc -s copy

    content 指定的内容将被输出到目标文件中,与src不能同时使用

    src 指定原文件or目录

    desc 远程主机的绝对路径

    ... 

file 文件管理

    链接文件

        ansible all -m file -a 'path=/tmp/fatab.link src=/etc/fstab state=link'

ping 测试连通性

    ansible all -m ping

service 服务管理

    enabled 开机启动

    name 服务名

    state started stopped restarted

    ansible webserver -m service -a 'enabled=true name=httpd state=started'

shell 执行命令

    # ansible all -m command -a 'echo redhat | passwd --stdin admin' 执行成功但未生效,-a 参数不识别管道符,变量

    ansible all -m shell -a 'echo redhat | passwd --stdin admin'

script 执行脚本

    # 将本地的脚本发送到远程主机执行,脚本文件以相对路径指定

    ansible all -m script -a 'xxx.sh'

yum 软件包安装

    安装 ansible all -m yum -a 'name=httpd'

    卸载 ansible all -m yum -a 'name=httpd state=absent'

setup 收集facts信息

    # 每个被管理节点在接受命令前,会将当前主机的相关信息(操作系统、IP地址、MAC地址等)报告给ansible主机

    ansible all -m setup 

Ansible简单实例

1个控制端 + 3个被控制端

  Control 192.168.180.128

  Client1 192.168.180.130

  Client2 192.168.180.131

  Client3 192.168.180.132

step1:

    # ansible 通过ssh实现配置管理、应用部署、任务执行等功能,因此,事先配置ansible端基于密钥认证于个被管理节点通信

    ssh-keygen -r rsa -P ''

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@127.0.0.1

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.180.130

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.180.131

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.180.132

step2:

    # 指定主机清单

    备份一下hosts文件

        cd /etc/ansible/

        cp hosts {,.backup}

    vim hosts

    # 把原文配置删除,自己指定host清单

        :.,$d

        [webserver]

        192.168.180.130

        192.168.180.131

        [dbserver]

        192.168.180.132

step3:

    # 测试主机清单是否生效

    # 是否可以管理远程主机

    ansible all -m command -a 'ip addr'

    ansible webserver -a 'ip addr'

    ansible 192.168.180.130  -a 'ip addr'

 

免责声明:文章转载自《Ansible入门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇pl/sql中的取模运算Notification(Notification的通知栏常驻、Notification的各种样式、Notification点击无效)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jenkins配置SSH远程服务器连接

之前用jenkins做了一个自动发布测试,配置任务的Post Steps时,选择的是执行shell命令。如下图: 这是在本192.168.26.233服务器上测试的,此服务器上运行jenkins,tomcat。现在换另一种方式,把jenkins打好的包远程发送到另一台服务器上运行。   第一步:安装pulish Over SSH插件       在系统管...

使用ssh远程执行命令批量导出数据库到本地(转)

前天正在跟前端的同事调试功能。服务器开好,模拟的玩家登录好,就在倒计时。这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据。好吧,我看了一下时间,11:47。心想,跟前端调试完,去吃个饭再午休一下那就下午再给吧。没想对方来一句"就导个数据库而已,要这么久么?",而且还是直接跟我上司说的。我嚓,好吧,我导。...

git ssh免登陆,以及ssh config

git去连接github或gitlab上的远程仓库,可以使用ssh方式,也可以使用git的账号密码登录 这里介绍使用ssh方式实现免登陆(第一步和第二步即可实现)   第一步:生成ssh秘钥ssh-keygen -t rss -C xxx@xx.com   也可以不设置邮箱,直接【ssh-keygen -t】生成秘钥   输入命令后第一步提示生成ssh k...

使用rsync基于ssh免密登陆进行备份或目录同步

日常工作中有很多的备份工作,rsync是一个很不错的工具,尝试使用基于ssh免密登陆的方式进行备份,测试成功,是可行且方便的方法,撰文记之,以备后用: 1.A主机root用户对B主机root用户做ssh免密登陆,此过程不再赘述,请自行百度。 2.A主机安装rsync命令:yum install rsync -y 3.在A主机根目录下创建/ceshi目录,...

Windows版Jenkins+SVN+Maven自动化部署环境搭建【转】

前言 因今年公司新产品线较多,为了降低耦合,达到业务分离、重用,提高内部开发效率的目的,采用了基于服务组件、前后端分离的架构体系。与之前传统单应用架构相比,系统部署、配置更加复杂,为了能够频繁地将软件的最新版本,及时、持续地交付给测试团队及质量控制团队,以供评审,所以引入持续集成工具Jenkins,从而实现公司新产品持续集成,自动化部署。 环境准备 操作...

本地Git配置绑定远程Github账户

(背景是本地环境以前没有绑定过github,即没有残余文件) 本地设置用户名和链接远程账户(引号内修改为自己的用户名和账号) git config --global user.name"wangqinghe95"git config --global user.email"675072584@qq.com" 配置密钥 ssh-keygen -t rsa -...