运维编排场景系列---在ECS实例上运行Ansible-playbook
场景介绍
Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。本文介绍通过OOS在实例中运行指定OSS中的PlayBook。
模板介绍
- 模板内容:
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中准备一个需要运行的剧本:
本文所用剧本内容如下:
--- - 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配置如下:
操作指引
- 首先登录到运维编排控制台 。
- 单击 自定义模版 ,单击 创建模版 。
- 单击 YAML 。
将上面提供的YAML格式模版内容粘贴到编辑框内。
- 单击 校验模版。
- 若模板内容已通过校验,继续下一步。
- 若模板内容校验失败,请根据提示内容调整模版。
- 填写 模版名称。
本文此处填写"test_ansible_run_play_book" 。
- 单击 创建模版 。
在自定义模版列表中可通过模版名称快速找到该模版。
- 单击 创建执行 。
- 风险确认模式 选择 客户了解风险,无需确认 。
- 单击 下一步,设置参数 。
- 单击 下一步,确认创建 ,单击 创建执行 。
- 执行成功后单击详情,查看执行结果。
12.进入远程链接,管理终端,查看playbook运行结果:
系列文章
主题文章
最佳实践
玩转运维编排服务的权限:Assume Role+Pass Role
场景系列
运维编排场景系列----更新ECS镜像
运维编排场景系列-----给ECS实例自动打TAG
运维编排场景系列----从实例中拷贝文件到OSS
运维编排场景系列----给实例加到SLS机器组
运维编排场景系列----检测MFA功能状态
阿里云运维编排新功能:一键批量克隆ECS
运维编排场景系列-----每日统计多Region实例的运行状态
运维编排场景系列-----如何使用jq
运维编排场景系列----分批到机器上运行命令
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Kubernetes中将Delete类型的PV更新为Retain类型
回收策略 典型的StorageClass模板如下所示,通过reclaimPolicy 字段定义生成PV的回收策略: apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-disk-efficiency parameters: type: cloud_efficiency provisioner: alicloud/disk reclaimPolicy: Delete reclaimPolicy两种常用取值:Delete、Retain; Delete:表示删除PVC的时候,PV也会一起删除,同时也删除PV所指向的实际存储空间; Retain:表示删除PVC的时候,PV不会一起删除,而是变成Released状态等待管理员手动清理; 这两种配置各有
- 下一篇
运维编排场景系列---运行远端shell脚本
场景介绍 ECI在使用OOS的时候,遇到了command比较复杂的情况,通过runcommand一行一行的敲,有点麻烦,需要直接运行一个OSS里面的script,这样ECI同学可以单独维护OSS里的文件。本文介绍如何用OOS在指定实例中运行OSS中的shell脚本。 解决方案 我们首先准备一台ECS实例,远程连接管理终端,在OSS上传一个shell脚本:内容为: # /bin/bash mkdir test_run_shell; 先登录到运维编排控制台。如果您之前从未开通过OOS服务,请点击“立即开通”按钮,即可一键开通。OOS运维编排是安全免费的服务,请放心开通。 开通后在公共模板中搜索'ACS-ECS-RunRemoteShellScript'这个模板。点击“创建执行”的按钮,选择“客户了解风险,无需确认”的按钮,点击“下一步:设置参数”。在参数设置页,需要输入如下参数: 参数说明: instanceId:实例ID InstanceRole:挂载到实例的RAMRole名称 srcUrl:脚本在oss中的目录 destUrl:实例中下载脚本的目录 fileName:脚本名称 work...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS关闭SELinux安全模块