服务器部署ansible_使用Ansible部署无服务器应用程序

服务器部署ansible

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的无代理架构很好地结合在一起。

在进入Lambda示例之前,让我们看一个用于配置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

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

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

翻译自: https://opensource.com/article/17/8/ansible-serverless-applications

服务器部署ansible

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值