ansible 修改文件变量_自动化运维工具Ansible

82e16e50792121a39ef22b5de8ea5f71.png点击上方 “公众号” 可以订阅哦!

59a545f1cb1efe4639bd6fed433d2414.png

上周TestOps免费试听课课程表

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

在这周三的测试运维试听课程中,芒果给大家介绍了自动化运维工具-Ansible的使用,这里我们来做个小总结。

Ansible介绍

ansible 是什么?

ansible是基于 paramiko 开发的自动化运维工具,它基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

ansible基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。

2cd0d9d401ffbd9d405a1a335d94087e.png

上图中我们看到的主要模块如下:

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 ansible
Ansible命令

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-keygen

2.向主机分发私钥

ssh-copy-id root@10.0.0.12ssh-copy-id root@10.0.0.13

ansible 常用模块

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等模块这里因为篇幅原因暂不描述,大家可以访问官网了解。

playbooks

playbooks是 一个不同于使用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配置、配置等内容。

想要深入学习的同学,可以以点击下方原文、长按本文开头的二维码进入课程,找芒果可以免费领取课程视频哟。

芒果微信:

f68e8b6fd13249e656bad03723aff8d3.png

fbec39625fc2642f74edde2ae1fb01c9.png

TestOps|测试运维

精益技术 赋能过程

点击右上角"..."将好文分享给朋友吧

长按二维码关注我们

940cbf6b7d4b1048f9256af75fbe905f.png好看请点这里~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值