Terraform 集成Ansible 实战(local)

举报
kaliarch 发表于 2022/06/11 12:24:56 2022/06/11
【摘要】 前言Terraform 和 Ansible 是两个独立的工具,有各自的用途,但它们可以集成以解决典型用例以及它们相互补充的方式,这使得它们更加受欢迎。 一 工具简介 1.1 Terraform它是作为代码(IaC)软件工具的基础设施,用于构建、更改和版本控制基础设施。它与500多个供应商合作,这些供应商的资源可用于提供基础设施。 1.2 Ansible它是一种配置管理工具,可在已设置的基础...

前言

Terraform 和 Ansible 是两个独立的工具,有各自的用途,但它们可以集成以解决典型用例以及它们相互补充的方式,这使得它们更加受欢迎。

一 工具简介

1.1 Terraform

它是作为代码(IaC)软件工具的基础设施,用于构建、更改和版本控制基础设施。它与500多个供应商合作,这些供应商的资源可用于提供基础设施。

1.2 Ansible

它是一种配置管理工具,可在已设置的基础架构上配置和部署应用程序时派上用场。在本文中,我们使用 Ansible 配置了 terraform 部署的基础设施。

本文将使用Terraform对腾讯云基础设施资源进行编排管理,使用Ansible对主机实例进行配置管理。

二 架构及流程

总体方案使用terraform来进行云上基础设施编排,使用ansible进行主机或其他设施的配置管理。

通过在执行基础设施和配置管理节点上安装terraform 和ansible 进行对目标云资源进行编排。

三 实战

3.1 编排node节点

  • 利用本地密钥编排多台node节点
  • 从ansible_manager 的 terraform_remote_state 获取ansible manger的ip地址信息,用于传输node节点的IP.txt 列表文件至ansible
  • 将本地编排node节点的ansible playbook脚本上次至目标服务器。
  • 将创建node节点的私钥传输到ansible,供后续ansible免密登录node节点执行ansible playbook

生成inventory可以使用该项目:https://github.com/adammck/terraform-inventory


在对node节点编排出来后,使用以下ansible playbook进行对服务器执行配置管理,主要内容为安装http,git并启动http服务,对数据盘/dev/vdb进行格式化挂在,并在其写入html文件

- name: integration of terraform and ansible
  hosts: all

  tasks:
    - name: installing httpd
      package:
        name: httpd
        state: present
    - name: installing php
      package:
        name: php
        state: present
    - name: starting httpd service
      service:
        name: httpd
        state: started
    - name: installing git
      package:
        name: git
        state: present
    - name: formatting storage
      filesystem:
        fstype: ext4
        dev : /dev/vdb
    - name: making folder
      file:
        path: /var/www/html/web
        state: directory

    - name: mounting storage
      mount:
        fstype: ext4
        src: /dev/vdb
        path: /var/www/html
        state: mounted

    - name: create html file
      ansible.builtin.shell:
        cmd: echo "xuel tf ansible page" > index.html
        chdir: /var/www/html

四 测试

本实战将backend存储在腾讯云cos中,workspace使用default

4.1 编排node节点

编排三台node节点。

查看云资源编排结果

查看存储在cos中的state状态文件

登录任意服务器进行查看情况,http已经启动,并且磁盘已经格式化并挂载,index静态文件也已ok。

其他

  • 在写入多个ip列表时
content = join("\n", tencentcloud_instance.xuel_tf_ansible_node.*.public_ip)
  • ansible 的配置文件中定义了inventory 和 private_key_file 的路径
[defaults]
inventory = /opt/ansibleworkspace/ip.txt
host_key_checking= False
private_key_file=/opt/ansibleworkspace/id_rsa
remote_user=root
[privilege_escalation]
become=true
become_method=sudo
become_user=root
become_ask_pass=false

后期可以结合将编排出的主机进行分组,并配合git流程实现基于Gitlab 的DevOPS流程。

  • 需要注意编排的顺序,基础设施编排完后执行配置管理。

参考链接

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。