自动化运维工具-Ansible

时间主题12.25(周三)20:00 自动化运维工具-Ansible

在这周三的测试运维试听课程中,芒果给大家介绍了自动化运维工具-Ansible的使用,这里我们来做个小总结。Ansible介绍ansible 是什么?ansible是基于 paramiko 开发的自动化运维工具,它基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。

上图中我们看到的主要模块如下:Ansible:Ansible核心程序;Host Inventory:记录由Ansible管理的主机信息,包括端口、密码、ip等;Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能;Core Modules:核心模块,主要操作是通过调用核心模块来完成管理任务;Custom Modules:自定义模块,完成核心模块无法完成的功能,支持多种语言;Connection Plugins:连接插件,Ansible和Host通信使用。Ansible安装ansible安装前的依赖管理主机:安装python2(2.7)或者python3(3.5或以上)主机的系统可以是 RedHat, Debian, CentOS, OS X, BSD的各种版本托管节点:通常我们使用 ssh与托管节点通信,默认使用sftp.如果 sftp 不可用,可在ansible.cfg配置文件中配置成 scp的方式;ansible 安装方式(centos)ansible安装常用两种方式,yum安装和pip程序安装。下面我们来详细介绍一下这两种安装方式。使用 pip(python的包管理模块)安装:pip install ansible使用 yum 安装:yum install -y ansibleAnsible命令ansible命令执行过程:加载自己的配置文件,默认/etc/ansible/ansible.cfg;查找对应的主机配置文件,找到要执行的主机或者组;加载自己对应的模块文件,如 command;通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;给文件 +x 执行权限;执行并返回结果;删除临时py文件,sleep 0退出。ansible 常用命令集:Ansibe AD-Hoc  临时命令执行工具,常用于临时命令的执行ansible-doc   Ansible 模块功能查看工具ansible-galaxy  下载/上传优秀代码或Roles模块 的官网平台,基于网络的ansible-playbook  Ansible 定制自动化的任务集编排工具ansible-pull  Ansible远程执行命令的工具,拉取配置而非推送配置(使用较少,海量机器时使用,对运维的架构能力要求较高)ansible-vault  Ansible 文件加密工具ansible-console  Ansible基于Linux Consoble界面可与用户交互的命令执行工具系统由控制主机对被管节点的操作方式可分为两类,即adhoc和playbook:ad-hoc模式(点对点模式):使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。就相当于bash中的一句话shell。playbook模式(剧本模式):是Ansible主要管理方式,也是Ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如Web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。ad-hoc命令ansible 配置公私钥前面我们已经提到过 ansible 是基于 ssh 协议实现的,为了实现无密码的登录、执行,可以给被访问主机分配秘钥。其配置公私钥的方式与 ssh 协议的方式相同,具体操作步骤如下:1.生成私钥ssh-keygen2.向主机分发私钥ssh-copy-id root@10.0.0.12ssh-copy-id root@10.0.0.13ansible 常用模块1)主机连通性测试ansible web -m ping结果显示正确就说明我们的主机是连通状态的。接下来的操作才可以正常进行。2)command 模块这个模块可以直接在远程主机上执行命令,并将结果返回本主机。示例:ansible web -m command -a "ls /root/test"3)shell 模块shell模块可以在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道等。示例:ansible web -m shell -a "cat /etc/passwd"只要是我们的shell命令,都可以通过这个模块在远程主机上运行。4)copy 模块这个模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等。示例:#复制文件:ansible web -m copy -a "src=/root/test.sh dest=/root/test"#给定内容生成文件,并制定权限ansible web -m copy -a "content='ansible\n' dest=/root/name mode=755"5)file 模块该模块主要用于设置文件的属性,比如创建文件、创建链接文件、删除文件等。示例:#创建目录ansible web -m file -a "path=/root/app state=directory"#创建链接文件ansible web -m file -a "path=/data/bbb.jpg src=aaa.jpg state=link"yum、service等模块这里因为篇幅原因暂不描述,大家可以访问官网了解。playbooksplaybooks是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础。playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。playbook是通过YAML格式来进行描述定义的。playbook核心元素Hosts:主机组,可以是一个或多个组;Users:哪些服务器可以什么用户完成;Tasks:任务,由模板定义的操作列表Variables:变量Templates:模板,即使用模板语法的文件Handlers:处理器 ,当某条件满足时,触发执行的操作Roles:角色示例:#使用nginx+uwsgi作为web服务器,部署Django项目- hosts: webservers remote_user: root tasks: - name: 判读uwsgi进程是否存在 shell: ps -aux |grep uwsgi register: result - name: 关闭uwsgi服务 command: pkill -f uwsgi -9 when: result.stdout.find('uwsgi.ini') != -1 - name: 删除原有虚拟环境 file: path=/root/django/django_web_env/ state=absent - name: 新建虚拟环境 shell: python3 -m venv /root/django/django_web_env - name: 将新的项目代码部署到虚拟环境 copy: src=/root/.jenkins/workspace/django_web/ dest=/root/django/django_web_env/mywebsite - name: 项目配置,启动uwsgi shell: chmod +x /root/django/django_web_env/mywebsite/init.sh shell: sh /root/django/django_web_env/mywebsite/init.sh - name: 重启nginx command: systemctl restart nginx后续的啰啰嗦嗦当然除了课程内容除了这些基本的介绍,芒果还给大家介绍了ansible的hosts配置、配置等内容。

(0)

相关推荐

  • Ansible-下部

    ansible-playbook playbook是由一个或多个模块组成的,使用多个不同的模块,完成一件事情. ansible软件特点 可以实现批量管理 可以实现批量部署 ad-hoc(批量执行命令) ...

  • 别让运维太忙,一文详解 Ansible 的自动化运维

    一.Ansible 概述 Ansible 是近年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible 通过本身集成的非常丰富 ...

  • ANSIBLE安装和常用模块模块使用详细教程

    安装配置ANSIBLE 下载ANSIBLE [root@ansible ~]#yum install ansible 确认安装 [root@ansible ~]#ansible --versionan ...

  • docker部署zabbix ansile批量部署自动发现

    docker部署zabbix ansile批量部署自动发现

  • Ansible-上部

    Ansible概述 Ansible是一个配置管理系统configuration management system python 语言是运维人员必须会的语言 ansible 是一个基于python 开 ...

  • ansible简介

    Ansible项目一.Ansible简介:ansible是一种新流行的自动化运维工具,基于python2-paramiko模块开发,集合了众多运维工具(puppet.cfengine.chef.fun ...

  • Ansible--快速入门

    介绍 Ansible是一款简单的运维自动化工具,只需要使用ssh协议连接就可以来进行系统管理,自动化执行命令,部署等任务. Ansible的特点 1.ansible不需要单独安装客户端,也不需要启动任 ...

  • ansible之利用角色简化playbook

    角色结构描述 Ansible角色提供了一种方法,让用户能以通用的方式更加轻松地重复利用Ansible代码.通过打包的方式将任务归档至一起,更加灵活的调用 Ansible角色具有下列优点: 模块化,通用 ...

  • 企业基于开源自动化运维工具的运维实践

    [作者]聂奎甲,从事IT工作十余年,主要参与项目规划实施,主要参与政府.电力.国土等行业的系统集成项目,包括主机存储.Oracle数据库,精通计算机网络与安全. 一.运维的发展趋势 随着制造业的信息化 ...

  • 自动化运维工具

    目录 ansible 简介 ansible 是什么? ansible 特点 ansible 架构图 ansible 任务执行 ansible 任务执行模式 ansible 执行流程 ansible 命 ...

  • 云计算环境系统自动化运维编程Bash Shell课程教程 flv格式支持手机观看

    云计算环境系统自动化运维编程Bash Shell课程教程 flv格式支持手机观看

  • 云计算和云服务是一样的吗?数据库自动化运维

    随着互联网技术的飞速发展,现在正逐步进入大数据.云计算.虚拟技术和人工智能时代,技术作为王者的现象越来越明显.目前,网站规模越来越大,结构越来越复杂,对Linux运维工程师的需求也越来越迫切,特别是对 ...

  • MySQL 8.0 官方运维工具集合

    如今,MySQL已经是非常普及的数据库,开源社区的支持也是非常活跃.谈到官方运维工具,大家都会用到mysqldump,其实除了这个之外还有一些实用的工具,今天帮大家梳理一下. 以下环境基于MySQL ...

  • 什么是Python自动化运维?

    "Python自动化运维"这个词,想必大家都听说过,但是很多人对它并不了解,也不知道是做什么的,那么你对Python自动化运维了解多少呢?跟着小编往下看. 什么是Python自动化 ...

  • 陕重汽:大规模数据库如何实现自动化运维?

    导读:陕重汽目前亟需建设具有丰富功能的数据库自动化运维平台,实现数据库日常运维管理的标准化.自动化和智能化.美创科技利用数据库运行安全管理平台(OSM)+运维云线上与线下结合的综合解决方案,高效率地完 ...

  • 用Python实现网络自动化运维,获取交换机上活跃计算机的信息

    用Python实现网络自动化运维,获取交换机上活跃计算机的信息