博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务器部署ansible_使用Ansible部署无服务器应用程序
阅读量:2528 次
发布时间:2019-05-11

本文共 2796 字,大约阅读时间需要 9 分钟。

服务器部署ansible

被设计为实际工作中最简单的部署工具。 这意味着它不是完​​整的编程语言。 您可以编写YAML模板来定义任务并列出使作业自动化所需的所有任务。

多数人认为Ansible是“ for循环中的SSH”的增强版本,对于简单的用例来说确实如此。 但是真正的Ansible与任务有关,而不与SSH有关。 在许多使用案例中,我们通过SSH连接,但也支持Windows计算机的Windows远程管理(WinRM),网络设备的不同协议以及作为云服务通用语言的HTTPS API。

在云中,Ansible可以在两个单独的层上运行:控制平面和实例上资源。 控制平面包括在OS上运行的所有组件。 这包括设置网络,生成实例,设置更高级别的服务(如Amazon的S3或DynamoDB),以及保持云基础架构安全并为客户提供服务所需的其他一切。

实例工作是您已经知道的Ansible的工作:启动和停止服务,配置文件模板,安装软件包以及您可以通过SSH完成的与操作系统相关的所有其他事情。

现在, 怎么样? 根据您的要求,无服务器是不断涌向公共云的最终扩展,或者是全新的范式,其中的一切都是API调用,而这从来没有做过。

Ansible拥有第一个观点。 在“无服务器”成为术语之前,用户必须管理和配置EC2实例,虚拟私有云(VPC)网络以及其他所有内容。 无服务器是朝着托管服务迈出的又一步,它与Ansible的无代理架构很好地结合在一起。

在进入示例之前,让我们看一个用于配置CloudFormation堆栈的简单任务:

- name: Build network     
  cloudformation:
    stack_name: prod-vpc
    state: present
    template: base_vpc.yml

编写这样的任务只需要花费几分钟,但是它将构建基础架构所涉及的最后一个半手工步骤(单击“创建堆栈”)带入了包含所有其他内容的剧本中。 现在,您的VPC只是建立新区域时可以调用的另一项任务。

由于云服务提供商是真正了解您帐户中实际情况的真实来源,因此Ansible有多种方法可以撤回该请求,并使用ID,名称和其他参数来筛选和查询正在运行的实例或网络。 以cloudformation_facts模块为例,我们可以使用该模块从刚刚创建的模板中获取子网ID,网络范围和其他数据。

- name: Pull all new resources back      
in
as a variable
  cloudformation_facts:
    stack_name: prod-vpc
  register: network_stack

对于无服务器应用程序,除了任何其他DynamoDB表,S3存储桶以及其他任何东西之外,您肯定需要补充Lambda函数。 幸运的是,通过使用lambda模块,可以按照与上一个任务中的堆栈相同的方式来创建Lambda函数:

- lambda:     
    name: sendReportMail
    zip_file:
"{
{ deployment_package }}"
    runtime: python3.6
    handler: report.send
    memory_size:
1024
    role:
"{
{ iam_exec_role }}"
  register: new_function

如果您希望使用其他工具来交付应用程序的无服务器部分,那么该工具也可以正常工作。 开源的具有自己的Ansible模块,该模块也可以正常工作:

- serverless:     
    service_path:
'{
{ project_dir }}'
    stage: dev
  register: sls
- name: Serverless uses CloudFormation under the hood, so you can easily pull info back into Ansible
  cloudformation_facts:
    stack_name:
"{
{ sls.service_name }}"
  register: sls_facts

这并不是您所需要的全部,因为无服务器项目也必须存在,而这正是您定义功能和事件源的繁重工作。 对于此示例,我们将创建一个响应HTTP请求的函数。 无服务器框架使用YAML作为其配置语言(与Ansible一样),因此应该看起来很熟悉。

# serverless.yml      
service: fakeservice
provider:
  name: aws
  runtime: python3.6
functions:
  main:
    handler: test_function.handler
    events:
      - http:
          path:
/
          method: get

在 ,我将介绍该示例以及其他深入的部署策略,以充分利用现有的Ansible手册和基础架构以及新的无服务器实践。 无论您是否能够在那里,我都希望这些示例可以帮助您开始使用Ansible,无论您是否需要管理任何服务器。

AnsibleFest是为期 一天的 会议,汇集了数百名Ansible用户,开发人员和行业合作伙伴。 加入我们,了解产品更新,鼓舞人心的演讲,技术深入探讨,动手演示以及网络交流日。 9月7日获得旧金山AnsibleFest的门票 。使用折扣码OPENSOURCE可节省25%的 费用

翻译自:

服务器部署ansible

转载地址:http://dgszd.baihongyu.com/

你可能感兴趣的文章
第十八次ScrumMeeting博客
查看>>
洛谷P2580 于是他错误的点名开始了 题解
查看>>
02-环境搭建
查看>>
spring第二冲刺阶段第七天
查看>>
搜索框键盘抬起事件2
查看>>
阿里百川SDK初始化失败 错误码是203
查看>>
透析Java本质-谁创建了对象,this是什么
查看>>
BFS和DFS的java实现
查看>>
QQ是怎样实现好友桌面快捷方式的?
查看>>
hadoop之安装
查看>>
Xamarin.Android开发实践(六)
查看>>
物联网项目的思考
查看>>
IntelliJ IDEA设置不自动打开最后关闭的项目
查看>>
抽象类
查看>>
ARC 101E.Ribbons on Tree(容斥 DP 树形背包)
查看>>
List数据分页
查看>>
kmp总结
查看>>
vuex模块相互调用
查看>>
js数字格式化千分位格式
查看>>
windows pip 安装 whl文件
查看>>