运维编排场景系列---在ECS实例上运行Ansible-playbook

简介: Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。本文介绍通过OOS在实例中运行指定OSS中的PlayBook。

场景介绍

Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。本文介绍通过OOS在实例中运行指定OSS中的PlayBook。

模板介绍

  1. 模板内容:
FormatVersion: OOS-2019-06-01
Description: Use this template to run Ansible playbooks on ECS Instance.
Parameters:
  instanceId:
    Description: The ID of ECS Instance.
    Type: String
    MaxLength: 30
    MinLength: 1
  playbookurl:
    Type: String
    Description: "You must specify a URL where the playbook is stored.You can specify the URL in the following formats: http://example.com/playbook.yml"
    AllowedPattern: ^\s*$|^(http|https)://[^']*$
  extravars:
    Type: String
    Description: 'Additional variables to pass to Ansible at runtime. Enter a space separated list of key/value
      pairs. For example: color=red flavor=lime'
    Default: SSM=True
    AllowedPattern: ^$|^\w+\=\S+(\s\w+\=\S+)*$
  check:
    Type: String
    Description: 'Use the check parameter to perform a dry run of the Ansible execution.'
    AllowedValues:
    - 'True'
    - 'False'
    Default: 'False'
  OOSAssumeRole:
    Description: The RAM role to be assumed by OOS.
    Type: String
    Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: runCommand
  Action: ACS::ECS::RunCommand
  Properties:
    commandContent:
      Fn::Join:
        - ' '
        - - ansible --version;
          - if [ $? -ne 0 ]; then
          -   echo "Ansible is not installed. Please install Ansible and rerun the command" >&2;
          -   exit 1;
          - fi;
          - if [[ {{playbookurl}} == http* ]]; then
          -   wget {{playbookurl}} -O playbook.yml;
          -   if [ $? -ne 0 ]; then
          -     echo "There was a problem downloading the playbook. Make sure the URL is correct and that the playbook exists.">&2;
          -     exit 1;
          -   fi;
          - fi;
          - if  [[ {{check}} == True ]] ; then
          -     ansible-playbook --check -c local -e {{extravars}} playbook.yml;
          - else
          -     ansible-playbook -c local -e {{extravars}} playbook.yml;
          - fi;
    instanceId: '{{ instanceId }}'
    commandType: RunShellScript
  Outputs:
    commandOutput:
      Type: String
      ValueSelector: invocationOutput
Outputs:
  commandOutput:
    Type: String
    Value: '{{ runCommand.commandOutput }}'

2.模板参数:

  • instanceId:实例ID
  • playbookurl:playbook下载路径
  • extravars:运行剧本的参数
  • check:检测模式

3.剧本介绍:
  在oss中准备一个需要运行的剧本:
a1

  本文所用剧本内容如下:

---
- hosts: local
  connection: local
  become: yes
  become_user: root
  tasks:
   - name: Install Nginx
     yum:
       name: nginx
       state: installed
       update_cache: true

4.实例介绍:
准备一台已安装Ansible实例,Ansible的hosts配置如下:
a2

操作指引

  1. 首先登录到运维编排控制台 。
  2. 单击 自定义模版 ,单击 创建模版 。
  3. 单击 YAML 。


 将上面提供的YAML格式模版内容粘贴到编辑框内。
a3

  1. 单击 校验模版。 
  • 若模板内容已通过校验,继续下一步。
  • 若模板内容校验失败,请根据提示内容调整模版。
  1. 填写 模版名称。


  本文此处填写"test_ansible_run_play_book" 。
a4

  1. 单击 创建模版 。


      在自定义模版列表中可通过模版名称快速找到该模版。

  1. 单击 创建执行 。
  2. 风险确认模式 选择 客户了解风险,无需确认 。


1568259457317_9be339ca_b5d0_4b1d_8ced_41c5dd0480c6

  1. 单击 下一步,设置参数 。

1568259659815_be0b521f_a4b1_4953_86e5_31a7eac06fe0

  1. 单击 下一步,确认创建 ,单击 创建执行 。
  2. 执行成功后单击详情,查看执行结果。

1568259799961_7d2d2d9e_eb8b_4531_a8e0_eb73dce1097d

12.进入远程链接,管理终端,查看playbook运行结果:
1568259990522_f375e62d_ca0d_4ba6_9310_45f7db5045d6

系列文章

主题文章

阿里云重磅发布云上自动化利器——运维编排OOS

最佳实践

玩转运维编排服务的权限:Assume Role+Pass Role

场景系列

运维编排场景系列----更新ECS镜像
运维编排场景系列-----给ECS实例自动打TAG
运维编排场景系列----从实例中拷贝文件到OSS
运维编排场景系列----给实例加到SLS机器组
运维编排场景系列----检测MFA功能状态
阿里云运维编排新功能:一键批量克隆ECS
运维编排场景系列-----每日统计多Region实例的运行状态
运维编排场景系列-----如何使用jq
运维编排场景系列----分批到机器上运行命令

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
运维 前端开发 JavaScript
半夜服务器告警不再错过!运维人员必备的语音通知方案
为解决深夜服务器宕机错过告警的问题,本文介绍一款专为个人开发者与运维人员设计的语音通知方案。通过电话直接推送重要告警,确保第一时间响应,避免故障扩大。支持多种编程语言调用,配置简单,3步即可完成,实时性强,适合各类关键业务场景。
325 5
|
2月前
|
运维 监控 安全
“没服务器了,那我这运维是白干了吗?”——无服务器架构对运维的冲击与转机
“没服务器了,那我这运维是白干了吗?”——无服务器架构对运维的冲击与转机
67 0
|
3月前
|
运维 Prometheus 监控
“服务器又宕了?”别急,智能运维教你如何未卜先知!
“服务器又宕了?”别急,智能运维教你如何未卜先知!
135 0
|
7月前
|
弹性计算 人工智能 运维
摆脱繁琐命令-让运维更加流畅-阿里云ECS操作系统控制台运维篇
阿里云操作系统控制台提供了便捷的服务器监控与管理功能,简化了运维工作。通过将多台服务器纳入统一监控平台,用户可以快速查看CPU、内存、磁盘和网络等关键资源的使用情况,避免了逐一远程连接查询的繁琐操作。此外,该工具支持自动化数据汇总,极大地方便了日报、周报和月报的编写。测试过程中,系统展示了良好的稳定性和响应速度,尤其在网络抖动和大文件健康状态测试中表现出色。整体体验流畅,显著提升了运维效率。 操作系统控制台地址:[点击访问](https://alinux.console.aliyun.com/)
221 26
摆脱繁琐命令-让运维更加流畅-阿里云ECS操作系统控制台运维篇
|
8月前
|
弹性计算 Ubuntu Linux
一键部署OpenWebUI+Ollama到阿里云ECS,轻松运行DeepSeek!(保姆级教程)
在当今数据驱动的时代,快速部署和管理大模型成为企业的关键需求。阿里云提供了一键部署OpenWebUI+Ollama的便捷方案,支持本地大模型运行和管理。用户也可以选择连接阿里云百炼的在线模型。
一键部署OpenWebUI+Ollama到阿里云ECS,轻松运行DeepSeek!(保姆级教程)
|
7月前
|
机器学习/深度学习 人工智能 运维
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
302 14
|
7月前
|
运维 监控 前端开发
Zabbix告警分析新革命:DeepSeek四大创新场景助力智能运维
面对日益复杂的IT环境,高效分析监控数据并快速响应成为运维的关键挑战。本文深入探讨了DeepSeek与Zabbix结合的创新应用,包括一键式智能告警分析、Zabbix文档知识库助手及钉钉告警增强功能。通过部署指南和实用脚本,展示了如何提升故障排查效率,为运维工程师提供高效解决方案。
714 5
|
7月前
|
运维 安全 开发工具
GitHub 热门开源运维工具 Websoft9:如何实现服务器管理效率翻倍?
Websoft9 提供 200+ 开源应用一键部署,支持容器化隔离、GitOps 自动化和企业级安全防护,助力服务器管理效率提升 80%。
229 1
|
7月前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化服务器管理:解锁运维的未来
基于AI的自动化服务器管理:解锁运维的未来
705 0
|
9月前
|
运维
阿里云服务器批量执行命令(系统运维管理oos)
阿里云【系统运维管理oos】批量执行详情
189 5

热门文章

最新文章