可重复使用的 juju charm: ansible role

在我们的博客中, 记录了我们在开发过程中所使用的技术和遇到的问题, 希望作为其他开发和设计者的一个学习交流平台.

可重复使用的 juju charm: ansible role


我们时常会使用juju charms来自动化部署许多不同的paas, 大多数是wsgi应用. 我们通常使用ansible使juju charms自动化部署更加轻松, 但是每个wsgi charm还是得重复坐以下相同的事情:

  1. 设置特定的用户
  2. 安装build代码到特定目录
  3. 安装依赖包
  4. 与后台连接(postesql, elasticsearch等)
  5. 生成设置
  6. 设置wsgi服务
  7. 设置log
  8. 支持更新代码而不必升级charm
  9. 支持不断地更新代码

其中只有三项是会随着paas不同而存在略微差别的: 依赖包, 生成设置和后台连接.

在尝试创建一个可重复使用的wsgi charm后, 我们借助ansible内置的对可重复利用的roles的支持创建了charm-bootstrap-wsgi, 其中包含了以上所有需求.

其中charm非常简单, 重新是使用wsgi-app的role:

    roles:
        - role: wsgi-app
          listen_port: 8080
          wsgi_application: example_wsgi:application
          code_archive: "{{ build_label }}/example-wsgi-app.tar.bzip2"
          when: build_label != ''

我们只需要做两件事情:

    tasks:
        - name: Install any required packages for your app.
          apt: pkg={{ item }} state=latest update_cache=yes
          with_items:
            - python-django
            - python-django-celery
          tags:
            - install
            - upgrade-charm

        - name: Write any custom configuration files
          debug: msg="You'd write any custom config files here, then notify the 'Restart wsgi' handler."
          tags:
            - config-changed
            # Also any backend relation-changed hooks for databases etc.
          notify:
            - Restart wsgi

其他则是由reusable wsgi-app role提供支持.


原文链接: http://weiguda.com/blog/55/