美文网首页
ansible 简单部署go application

ansible 简单部署go application

作者: eleven_a1dc | 来源:发表于2019-05-10 15:15 被阅读0次

github 地址, 下面部分部署有误,以 github 为准
之前都使用公司封装好的 ansible 命令。现在自己尝试用 ansible 部署

ansible 文档

官方推荐使用 role 。组织的目录如下

.
├── deploy.sh
├── group_vars
│   ├── all
│   └── wiki
├── hosts
├── roles
│   └── wiki
│       ├── tasks
│       │   └── main.yml
│       ├── templates
│       │   └── supervisor.conf.j2
│       └── vars
│           └── main.yml
└── wiki.yml

1 deploy.sh

里面只有一条 ansible-playbook 的命令

#!/usr/bin/env bash
ansible-playbook -i hosts --ask-vault-pass --become --become-method sudo --user ubuntu  --key-file=//Users/yang.yu/.ssh/yuyangaws.pem wiki.yml

-i 指的是 iinventory, 大概意思是部署到哪些主机上
--ask-vault-pass 输入密码,这个是用来解密加密的文件。有些需要加密的比如数据库用户名和密码。 可以使用ansible-vault encrypt SECRET_FILE 将SECRET_FILE 加密。可以将变量文件加密
--become 权限提升
--become-method sudo 权限提升
--user 登录远程机器的用户名
--key-file ssh 用的私钥

2. hosts

[yuyang-aws]
www.yuyang1992.de

yuyang-aws 是以系列主机的标签,
www.yuyang1992.de 是域名或者 IP地址。可以有多个

2.wiki.yml

---
- hosts: yuyang-aws
  vars:
    staging: no
  roles:
    - wiki

roles

wiki 表示一个角色
task 表示执行的任务
templates 其实类似新建 或者 copy 文件
vars 是一些变量
vars 下面的 main.yml

git_repo: 'https://github.com/yuyang199226/gowiki.git'
app_repo: gowiki
workdir: /home/ubuntu/work/src/{{ app_repo }}
cmd: "/home/ubuntu/work/src/{{ app_repo }}/wiki"
user: ubuntu
group: ubuntu
log_file: /tmp/log/wiki.log

tasks 下面的 main.yml

- name: create work dir
  file:
    path: "{{ workdir }}"
    state: directory
    mode: 0755
    owner: "{{ user }}"
    group: "{{ group }}"

- name: create log file
  file:
    path: "{{ log_file }}"
    state: touch
    mode: 0755
    owner: "{{ user }}"
    group: "{{ group }}"

- name: git pull from github
  git:
    repo: "{{ git_repo }}"
    dest: "{{ workdir }}"
    force: yes

- name: create binary excuted file
  environment:
    - PATH: $PATH:/usr/local/go/bin
  shell: go build "{{ workdir }}/wiki.go"
  args:
    chdir: "{{ workdir }}"

- name: play template module
  template:
    src: supervisor.conf.j2
    dest: /etc/supervisor/conf.d/wiki.conf
    mode: 0644
    owner: "{{ user }}"
    group: "{{ group }}"

- name: start supervisor
  supervisorctl:
    name: wiki
    state: restarted

templates 下的 supervisor.conf.j2 (Note: 必须以.j2 结尾 )

[program: wiki]
command={{ cmd }}
user={{ user}}
autostart=True
directory={{ workdir }}
stdout_logfile={{ log_file }}
stderr_logfile={{ log_file }}

相关文章

  • ansible 简单部署go application

    github 地址, 下面部分部署有误,以 github 为准之前都使用公司封装好的 ansible 命令。现在自...

  • Ansible运维自动化

    Ansible 特点 部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作。 使用 SSH(Se...

  • ansible 自动化

    ansible 自动化部署 ansible playbook ansible sshpass的部署问题 ans...

  • ansible

    什么是ansible?ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所...

  • ansible自动化运维

    安装ansible *ansible 各种模块 ansible playbook 实现httpd服务部署 ansi...

  • ansible 快速入门

    ansible 简介: Ansible是一个IT自动化工具。它可以配置系统、部署软件和编排任务,是一个简单易用的 ...

  • 01-初步认识Ansible

    Ansible 初步认识Ansible 什么是Ansible Ansible 是一个配置管理和应用部署工具,功能类...

  • ansible简明教程

    ansible自动化安装与部署 步骤1 安装ansible 步骤2 编辑/etc/ansible/hosts 步骤...

  • 2020-03-16 Ansible软件实践部署

    1. Ansible实践部署拓扑结构 2. Ansible实践部署地址规划 将已经部署好的架构服务器主机作为被管理...

  • ansible-批量管理服务

    1.ansible批量管理服务概述 实现批量管理 --- 并行管理 ---部署简单方便/应用简单方便 2.ansi...

网友评论

      本文标题:ansible 简单部署go application

      本文链接:https://www.haomeiwen.com/subject/mhraoqtx.html