【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

Ansible 实用指南:安装、配置和自动化 (ansible自动化运维)

用户投稿2024-04-10热门资讯26

引言

Ansible 是一个轻量级、模块化的开源配置管理工具,用于自动化 IT 基础设施。它使用简单的 YAML 语法来描述任务,并通过 SSH 连接到远程服务器以执行这些任务。本指南将逐步指导您安装、配置和使用 Ansible 自动化您的 IT 基础设施。

安装

先决条件:

Red Hat Enterprise Linux (RHEL)、CentOS 或 Debian/Ubuntu 等 Linux 操作系统Python 版本 2.7 或更高版本

安装步骤:

RHEL/CentOS:

yum install epel-releaseyum install ansible

Debian/Ubuntu:

apt-get updateapt-get install ansible

配置

创建清单文件:

清单文件定义了要管理的远程主机。创建一个名为 Ansible 实用指南:安装、配置和自动化 (ansible自动化运维) 第1张 hosts 的文件,并添加以下内容: [group_name] host1 host2 [group_name2] host3 host4 其中: group_name 是主机组的名称。 host1 host2 host3 host4 是要管理的主机。

创建剧本:

剧本文件定义了要执行的任务。创建一个名为 task.yml 的文件,并添加以下内容: - name: Install Apache2apt: name=apache2 state=present- name: Start Apache2 serviceservice: name=apache2 state=started 其中: - name: Install Apache2 定义了一个名为 "Install Apache2" 的任务。 apt: name=apache2 state=present 安装 Apache2 软件包。 - name: Start Apache2 service 定义了一个名为 "Start Apache2 service" 的任务。 service: name=apache2 state=started 启动 Apache2 服务。

自动化

运行剧本:

要运行剧本,请使用以下命令: ansible-playbook task.yml 此命令将在清单文件中定义的所有主机上执行剧本中的任务。

使用变量和循环:

变量可以存储值,例如: - name: Server_nameset_fact: server_name={{ inventory_hostname }} 循环允许您迭代列表或数组,例如: - name: Install packagesyum:name: "{{ packages }}"state: presentloop: "{{ packages_list }}"loop_control:label: package

条件语句:

when 语句可用于根据条件执行任务,例如: - name: Install MySQL only on database serverswhen: inventory_hostname in groups['database_servers']yum: name=mysql state=present

错误处理:

rescue 语句可用于在任务失败时执行恢复操作,例如: - name: Create filefile: path=/tmp/test.txt state=touchrescue:- name: Log errordebug:msg: "Error creating file /tmp/test.txt"

最佳实践

将任务组织到模块中。使用清单变量来定制部署。使用 Vault 管理敏感信息。使用 Docker 容器隔离 Ansible 角色。定期进行备份和测试。

结论

Ansible 是一种强大的工具,可用于自动化 IT 基础设施。遵循本指南中的步骤,您可以安装、配置和使用 Ansible 来简化您的运维任务,提高效率和可靠性。

Linux中ansible作用是什么?具备哪些作用?

在Linux中,ansible是非常重要的自动化运维工具,基于Python开发,集合了众多运维工具的优点,无需安装客户端,上手简单、好用,是运维人员必用的Devops自动化管理工具。 那么Linux中ansible作用是什么?有哪些特点?以下是详细的内容介绍。 Linux中ansible作用是什么? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于paramiko开发的,并且基于模块化工作,本身没有批量部署的能力。 真正具有批量部署的是ansible所运行的模块,ansible只是提供了一种框架。 ansible不需要在远程主机上安装elient/agents,因为它们是基于ssh来和远程主机通讯的。 在众多自动化运维工具中,ansible认可度很高,上手容易、学习简单,是每位运维工程师必须掌握的技能之一。 ansible有哪些特点? 1、部署简单,只需在主控端部署ansible环境,被控端无需做任何操作; 2、默认使用SSH协议对设备进行管理; 3、有大量常规运维操作模块,可实现日常绝大部分操作; 4、配置简单、功能强大、扩展性强; 5、支持API及自定义模块,可通过Python轻松扩展; 6、通过Playbooks来定制强大的配置、状态管理; 7、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可; 8、提供一个功能强大、操作性强的Web管理界面和REST API接口-AWX平台。

Ansible-基本概述

为什么要自动化运维

我们以 10 台机器部署 Nginx 为例。部署步骤如下:

1、通过 ssh 登录一台机器;

2、yum install -y nginx 或者 获取安装包自行编译安装;

3、配置 Nginx

4、启动 Nginx ,如有必要加入开机自启动;

5、退出登录

上面步骤重复 10 次,即可完成我们的部署要求。

痛点:

1、重复操作频繁,增加了人工成本和后续维护成本;

2、机器太多时,容易落下某些机器且未操作,进而产生后续影响;

3、人工频繁操作时可能有操作步骤不完整的情况,造成该机器和其他机器状态不一致。

我们还是以 10 台机器部署 Nginx 为例。部署步骤如下:

1、在控制机或者称为管理机的机器上写好相关脚本。「当然该脚本我们是测试通过的,脚本中包括安装、配置、启动等等」

2、将写好的脚本从控制机推送到受控机;

3、在受控机执行相关脚本,根据脚本部署我们需要的 Nginx。

好处

1、减少了重复操作,提高了工作效率;

2、减小了出错几率,提高了准确率;

3、所有机器状态一致,降低了后续维护成本。

软件安装部署

配置同步

代码变更

命令执行

任务执行

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

Ansible 是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是 Ansible 所运行的模块,Ansible 只是提供一种框架。进而能减少我们的重复操作,提高工作效率。

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

Ansible 目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。

1、批量执行远程命令:可以对 N 台主机同时进行命令的执行;

2、批量配置软件服务:可以用自动化的方式管理配置和服务;

3、实现软件开发功能:例如 jumpserver 底层使用 Ansible 来实现自动化管理;

4、编排高级的 IT 任务:Ansible 的 Playbooks 是一门编程语言,可以用来描绘一套 IT 架构。

1、部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作;

2、安全可靠,默认使用 SSH 协议对被控端进行管理;

3、有大量的常规运维操作模块,可实现日常绝大部分操作;

4、配置简单、功能强大、扩展性强;

5、支持 API 及自定义模块,可通过 Python 轻松扩展;

6、通过 Playbooks 来定制强大的配置、状态管理;

7、轻量级,无需在客户端安装 Agent,更新时只需在操作机上进行一次更新即可。

模块说明如下:

Ansible:Ansible 核心程序。

Host Inventory:记录由 Ansible 管理的主机信息清单,包括端口、密码、IP 等。

Playbooks:“剧本” YAML 格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。

Core Modules:核心模块,主要操作是通过调用核心模块来完成管理任务。

Custom Modules:自定义模块,完成核心模块无法完成的功能,支持多种语言。

Connection Plugins:连接插件,Ansible 和 Host 通信使用

Ansible 控制主机对被管节点的操作方式可分为两类,即 ad-hoc 和 playbook:

ad-hoc 模式(点对点模式)

使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令。 就相当于 bash 中的一句 shell。

playbook 模式(剧本模式)

是 Ansible 主要管理方式,也是 Ansible 功能强大的关键所在。 playbook 通过多个 tasks 集合完成一类功能 ,如 Web 服务的安装部署、数据库服务器的批量备份等。可以简单地把 playbook 理解为通过组合多条 ad-hoc 操作的配置文件。

简单理解就是:Ansible 在运行时,首先读取 中的配置,根据规则获取 Inventory 中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待执行返回的结果。

1、加载自己的配置文件,默认 /etc/ansible/;

2、查找对应的主机配置文件,找到要执行的主机或者组;

3、加载自己对应的模块文件,如 command;

4、通过 Ansible 将模块或命令生成对应的临时py文件(python脚本),并将该文件传输至远程服务器;

5、对应执行用户的家目录的 /tmp/XXX/文件;

6、给文件 +x 执行权限;

7、执行并返回结果;

8、删除临时py文件,sleep 0退出;

Ansible安装配置和基本使用

一、ansible 安装 ansible 依赖于python2.6或更高的版本、paramiko、PyYAML及Jinja2。 将python头文件拷贝到标准目录,以避免编译ansible时,找不到所需的头文件 备份旧版本的python,并符号链接新版本的python 修改yum脚本,使其指向旧版本的python,已避免其无法运行 1.1 编译安装 解决依赖关系 解压安装包编译安装 拷贝配置文件 1.2 rpm包安装 使用阿里云镜像源即可,这里为了方便使用,就直接使用yum安装了。 Fedora 用户可直接安装Ansible, 但RHEL或CentOS用户,需要 配置 EPEL # yum install -y epel-release # yum install -y ansible 注意:不同版本的ansible的功能差异可能较大。 二、配置 配置文件:/etc/ansible/ hostfile=/etc/ansible/hosts #指定默认hosts配置的位置 host_key_checking = False #不进行host_key检查,省去目标key发生变化时输入(yes/no)的步骤 ask_pass=True # 每次执行ansible命令是否询问ssh密码 ask_sudo_pass=True # 每次执行ansible命令时是否询问sudo密码 主机清单:/etc/ansible/hosts 主程序:ansible、ansible paly-book、ansible-doc 1、将要管理的主机纳入 /etc/ansible/hosts配置文件中,可以填写IP或是主机名 [WebServers] 10.10.10.3 10.10.10.4 2、.基于ssh的方式与被管理的主机进行通信,在管理的主机上(部署ansible的主机上)生成一对非对称密钥,将公钥发给被管理的主机。 a,生成密钥对:ssh-keygen -t rsa b,将密钥发放到要管理的主机:ssh-copy-id -i 10.10.10.3 或 ssh-copy-id -i /root//[email protected] 3、使用ansible命令测试 [root@wlm .d]# ansible all -m ping 10.10.10.4 | SUCCESS => { changed: false, ping: pong } 三、基本使用 1、常用命令 ansible-doc 命令:获取模块列表、模块使用格式。 ansible-doc -l :获取列表 ansible-doc -s module_name:获取指定模块信息 2、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文件路径; 3、常用模块介绍 1、command模块:远程主机上运行命令 例:ansible hosts -m command -a ls /tmp 注:command模块也可以省略。 给远程主机添加用户、设置密码: ansible hosts -a useradd user1 ansible hosts -a echo abc | passwd --stdin user1 2、shell模块:远程主机在shell进程下运行命令,支持shell特性,也支持管道符。 10.10.10.4 | SUCCESS | rc=0 >> 3、copy模块:把当前主机文件复制到远程主机位置,可以指定mode、own、group 10.10.10.4 | SUCCESS => { changed: true, checksum: ceebfe5d05e842cb43a9, dest: /root/, gid: 0, group: root, md5sum: 1c6d47c6e4d59cb47fff140b89, mode: 0644, owner: ansible, size: 15, src: /root//tmp/ansible-tmp-.19-4348/source, state: file, uid: 0 } 4、cron模块:在远程主机指定crontab周期性计划任务 minute= hour= day= month= weekday= job= name= (必须填写) state= ansible all -m cron -a minute=*/10 job=/sbin/ntpdate 10.10.10.10 & >/dev/null name=synctime 可使用crontab -l查看 在管理的主机上可以删除制定的计划任务 10.10.10.4 | SUCCESS => { changed: true, envs: [], jobs: [] } 5、fetch模块:和copy相反,从远程主机拷贝文件到本地主机 可以不要flat=yes参数,但作用: 当dest=/root/kel/ ,会保存在/root/kel/目录下 当dest=/root/kel ,会拷贝文件,并命名成kel 6、file模块:file模块包含了文件、文件夹、超级链接类的创建、拷贝、移动、删除 path=/etc/ owner=foo group=foo mode=0644 src=/file/to/link/to dest=/path/ro/symlink owner=foo group=foo state=link src=/tmp/{{}} dest={{}} state=link with_items: path=/etc/ state=touch mode=u=rw,g=w,o=r path=/etc/ state=touch mode=u+w,g-w,o-rw 7、yum模块:用于yum安装安装和卸载 8、service模块:服务管理 9、user/group模块:user模块管理用户;group模块管理group 四、Playbook剧本 playbook 是ansible更强大的配置管理组件,实现基于文本文件编排执行的多个任务,且多次重复执行。 playbook组织格式为使用YAML语言来编写的。 playbook 是由一个或多个“play”组成的列表。 play的主要功能在于将事先归为一组的主机装扮成事先通过ansible中的task定义好的角色。 从根本上讲,所谓的task无非是调用ansible的一个module。 将多个play组织在一个playbook中,即可以让他们联通起来按事先编排的机制生效。 1、例子: 在ansible主机上的root目录下创建httpd目录,将本机的文件拷贝到该目录下,修改配置文件里的监听端口是8081 remote_user:root #root前不能有空格 tasks: #任务列表 yum name=httpd state=present #yum后的: 删除掉 copy src=/root/httpd/ dest=/etc/httpd/conf service name=httpd state=started 注意:yaml文件中支持#;下面的操作要跟上面的name对齐。 测试: ansible-playbook --check playbook :只检测可能会发生的改变,但不真正执行操作 ansible-playbook playbook :直接执行 ansible-playbook --list-hosts :列出运行任务的主机 2、playbook介绍 设置在特定条件下触发: a,某任务的状态在运行后为changed时,可通过“notify”通知给相应的handles; handles:任务在特定条件下触发;接收到其他任务的通知是被触发; b,任务可以通过“tags”打标签,而后可在ansible-playbook命令上使用-t指定进行调用;

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

Ansible 实用指南:安装、配置和自动化 (ansible自动化运维) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
欢迎你第一次访问网站!