[ansible-playbook]4持续集成环境之分布式部署利器ansibleplay学习

carol2000 carol2000     2022-09-11     533

关键词:

3 ansible-play讲的中太少了,今天稍微深入学习一点

预计阅读时间:15分钟

一: 安装部署

参考 http://getansible.com/begin/an_zhuang_ansile 

二:常用模块

a. service 用于启动检查服务

b. file 用于文件删除 链接 创建

c.shell 用于执行脚本(不推荐,因为shell操作有时并非幂等,而且不方便检查执行结果)

d.copy 用于拷贝文件

e. vars+ template 用于根据模板文件基于变量创建配置文件

样例:

test.yml

---
#Task1
- hosts: web
  vars:
   domain: 0731
  remote_user: root
  tasks:
  - name: test connection
    ping:
  - name: httpd check
    service: name=sshd state=started
  - name: remove foo.conf
    file: dest=/etc/foo.conf state=absent
    #- name: delete foo.conf
    #shell: rm -f /etc/foo.conf

  - name: copy foo.conf
    copy: src=/srv/myfiles/foo.conf dest=/etc/foo.conf
          owner=root group=root mode=064
    notify:
      - Verify Conf

  - name: Add template Config
    template: src=serversforhackers.com.j2 dest=/etc/{{ domain }}.conf owner=root group=root

  handlers:
  - name: Verify Conf
    shell: file /etc/foo.conf

#Task2
- hosts: server
  vars:
    sdomain: server_0731
    domain: 0731
  remote_user: root
  tasks:
  - name: Add template Config
    template: src=serversforhackers.com.j2 dest=/etc/{{ sdomain }}.conf owner=root group=root

 

模板文件: templates/serversforhackers.com.j2

server {
    # Enforce the use of HTTPS
    listen 80 default_server;
    server_name *.{{ domain }};
    return 301 https://{{ domain }}$request_uri;
}

hosts文件: 

[web]
10.0.0.3
10.0.0.4
[server]
10.0.0.5
10.0.0.6
[gateway]
10.0.0.7

 

执行脚本: # ansible-playbook -i host test.yml   (-i 表示指定读取的host文件路径)

PLAY [web] *******************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.4]
ok: [10.0.0.3]

TASK [test connection] *******************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.4]
ok: [10.0.0.3]

TASK [httpd check] ***********************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.3]
ok: [10.0.0.4]

TASK [remove foo.conf] *******************************************************************************************************************************************************************************************************************************************************
changed: [10.0.0.3]
changed: [10.0.0.4]

TASK [copy foo.conf] *********************************************************************************************************************************************************************************************************************************************************
changed: [10.0.0.4]
changed: [10.0.0.3]

TASK [Add template Config] ***************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.4]
ok: [10.0.0.3]

RUNNING HANDLER [Verify Conf] ************************************************************************************************************************************************************************************************************************************************
changed: [10.0.0.3]
changed: [10.0.0.4]

PLAY [server] ****************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.5]
ok: [10.0.0.6]

TASK [Add template Config] ***************************************************************************************************************************************************************************************************************************************************
ok: [10.0.0.5]
ok: [10.0.0.6]

PLAY RECAP *******************************************************************************************************************************************************************************************************************************************************************
10.0.0.3                   : ok=7    changed=3    unreachable=0    failed=0
10.0.0.4                   : ok=7    changed=3    unreachable=0    failed=0
10.0.0.5                   : ok=2    changed=0    unreachable=0    failed=0
10.0.0.6                   : ok=2    changed=0    unreachable=0    failed=0

 

注:完整模块参见 http://docs.ansible.com/ansible/latest/modules_by_category.html

三 常见检查

语法检查  # ansible-playbook --syntax-check test.yml

注:报错信息有可能位置不准,碰见过对齐格式不正确引发的错误

列出主机  # ansible-playbook -i hosts --list-hosts test.yml

 

四 最佳实践

参考 http://docs.ansible.com/ansible/latest/playbooks_best_practices.html

根据 Roles分类,存放template 文件,加密yml(如果需要的话)

Git hub上的实例: https://github.com/ansible/ansible-examples 

 

参考资料:

https://serversforhackers.com/c/an-ansible-tutorial

http://getansible.com/advance/best_practice/zui_jia_shi_yong_fang_fa

使用gitlab+jenkins实现持续集成(ci)环境(代码片段)

使用GitLab+Jenkins实现持续集成(CI)环境一、持续集成简介1.GitLab简介2.Jenkins简介3.GitLab和GitHub的区别4.持续集成系统的工作流程二、使用GitLab+Jenkins实现持续集成(CI)环境1.安装Gitlab1)登录Gitlab2)配... 查看详情

持续集成与持续部署宝典part3:创建集成环境

通过前两篇文章《持续集成与持续部署宝典Part1:将构建环境容器化》和《持续集成与持续部署宝典Part2:创建持续集成流水线》,我们使用Docker创建了一个集中管理的构建环境,它可以应用到任意数量的机器上。接着,我们将... 查看详情

1.gitlab和jenkins结合构建持续集成(ci)环境

14.1持续集成概述及运行流程14.1.1持续集成概述持续集成概述:持续集成(Continuousintegration)持续集成是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干,并进行自动化测试。持续交付:持续交付指的是在持续... 查看详情

持续集成环境搭建

Jenkins-持续集成环境搭建 1. Jenkins 概述Jenkins是一个开源的持续集成工具。持续集成主要功能是进行自动化的构建。自动化构建包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的... 查看详情

微服务持续集成与部署-搭建

4.搭建持续集成与持续部署系统安装环境与版本操作系统: centos7,ip:http://121.36.145.230/Docker:19.03.8GitLab:8-8-stablejenkisn:2.2.6Docker-Registry:2.54.1.安装启动Docker4.2.安装配置启动GitLab4.3.安装启动jenkins具体看链接:4.4安装配置启... 查看详情

git+docker+jenkins持续集成

...Git作为版本控制库 Docker搭建测试环境 Jenkins作为持续集成服务Jenkins实现CI(ContinuousIntegration)到CD(ContinuousDelivery)的转换工具。期望:1、解决从开发–测试–上线等一系列环境统一及依赖问题 2、可实现不停服务发布上线... 查看详情

git+docker+jenkins持续集成

...Git作为版本控制库 Docker搭建测试环境 Jenkins作为持续集成服务Jenkins实现CI(ContinuousIntegration)到CD(ContinuousDelivery)的转换工具。期望:1、解决从开发–测试–上线等一系列环境统一及依赖问题 2、可实现不停服务发布上线... 查看详情

基于jenkins快速搭建持续集成环境

基于Jenkins快速搭建持续集成环境jenkins+maven+svn+tomcat自动部署Jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。1.... 查看详情

持续集成:什么是持续集成(ci)持续交付(cd)和持续部署(cd)

持续集成、持续交付和持续部署持续集成ContinuousIntegration:持续集成,简称CI,是软件开发周期的一种实践,把代码仓库(Gitlab或者Github)、构建工具(如Jenkins)和测试工具(SonarQube)集成在一起,频繁的将代码合并到主干然后... 查看详情

gitlabci持续集成配置方案(代码片段)

目录1.持续集成介绍1.1概念1.2持续集成的好处2.GitLab持续集成(CI)2.1简介2.2GitLab简单原理图2.3GitLab持续集成所需环境2.4需要了解知识3.搭建GitLab持续集成环境(NET版)3.1环境搭建3.1.1基础环境搭建3.1.2Git安装3.1.3NuGet安装3.2相关配... 查看详情

jenkinsgulp持续集成环境搭建

...教你jenkins如何集成前端构建工具Gulp。不要怕,jenkinsgulp持续集成环境搭建其实也很简单,我会分为五步向你介绍jenkinsgulp持续集成并帮助你完成一些惊人的事情。那就直接开始吧。第一步:安装Node  首先,最基本也最重... 查看详情

持续集成-jenkins介绍与环境搭建(代码片段)

什么是持续集成?  转自:https://blog.csdn.net/tanshizhen119/article/details/80328523  持续集成,俗称CI,大师MartinFowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天... 查看详情

持续集成篇--sonarqube代码质量管理平台的安装

视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.168.4.221环境:CentOS6.6、JDK7、MySQL5.1、SonarQube-4.5.4(LTS)root用户操作准备工作:已安装JDK7并配置好了环境变量 1 、安装MySQL5.1(可参考前面S 查看详情

jenkins-持续集成环境搭建

1.Jenkins概述   Jenkins是一个开源的持续集成工具。持续集成主要功能是进行自动化的构建。自动化构建包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。 2.Jenkins功能主要... 查看详情

jenkins+git搭建持续集成环境(代码片段)

持续集成通过自动化构建、自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态。jenkins是目前广泛应用... 查看详情

基于jenkins快速搭建持续集成环境

持续集成概述什么是持续集成随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile)在软件工程领域越来越红火,... 查看详情

持续集成+持续交付+持续部署

1continuousintegration持续集成持续集成强调对于开发人员的每个提交,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。  2continuousdelivery持续交付持续交付在持续集成的... 查看详情

简单搭建gitlabci持续集成环境(代码片段)

简单搭建GitlabCI持续集成环境简单介绍GitlabCI的功能从GitLab8.X开始,GitLabCI就已经集成在GitLab中,我们只要在项目中添加一个.gitlab-ci.yml文件,然后添加一个Runner,开启Runner,即可进行持续集成。而且随着GitLab的升级,GitLabCI变得... 查看详情