专栏首页测试技术圈Jenkins+Ansible+GitLab持续交付平台搭建-第4篇

Jenkins+Ansible+GitLab持续交付平台搭建-第4篇


Ansible playbooks常用模块介绍

File模块

#在目标主机创建文件或目标,并赋予其系统权限

- name: create a file

file: 'path=/root/foo.txt state=touch mode=0755 owner=foo group=foo'

-name:创建一个文件

file:声明调用的是一个file模块

path:定义需要在目标主机上创建一个root/ foo.txt

state=touch:定义我们创建一个文件

mode:给予创建的文件赋予权限

owner:文件的属组为foo用户

group:文件的属组为foo属组

Copy模块

#实现Ansible服务端到目标主机的文件传送

-name:create a file

copy: 'remote_src=no src=roles/testbox/file/foo.sh

dest=/root/foo.sh mode=0644 force=yes'

-name:使用一个文件

copy:

remote_src=no:声明将原Ansible主机端的文件传送到目标主机当中

src:声明源文件为该路径的文件夹

dest:将原地址的foo.sh传送到目标foo.sh

mode:给予创建的文件赋予权限

force:定义copy任务,强制执行

Stat模块

#获取远程文件状态信息

- name: chenk if foo.sh exists

stat: 'path=/root/foo.sh'

register: script_stat

name:定义任务名称foo.sh是否存在

stat:声明任务模块调用的是stat

path:定义当前需要去获取的文件路径

register:将获取到文件信息传送到script_stat

Debug模块

#打印语句到Ansible执行输出

- debug: msg="foo.sh exists"

when: script_stat.stat.exists

debug:定义debug模块输出的语句内容为foo.sh exists

when:

如果foo.sh存在就是Ansible打印输出信息,不存在就不打印

Command/Shell模块

#用来执行linux目标主机命令行

-name:run the script

command: "sh /rootfoo.sh"

-name:run the script (推荐)

shell: "echo 'test' > /root/test.txt "

Command/Shell编写可参考:http://zhangyongbo.iteye.com/blog/2428777

Template模块

#用来实现Ansible服务端到目标主机的jinja2模块传送

- name:write the nginx config file

template:src=roles/testbox/templates/nginx.conf.j2

dest=/ect/nginx/nginx.conf

name:定义一个任务名称编写nginx配置文件

template:声明语句调用的是template模块

src:定义原模板文件在/roles../ nginx.conf.j2

dest:目标目录,将src文件传送到/ect/.../ nginx.conf重命名为nginx.conf

Packaging模块

#调用目标主机系统包管理工具(yum,apt)进行安装

- name:ensure nginx is at the latest version

yum:pkg=nginx state=latest ---------->CenOS&RedHat系统

- name:ensure nginx is at the latest version

apt:pkg=nginx state=latest ---------->Debian&Ubuntu系统

Service模块

#管理目标主机系统服务

- name:start nginx service

service:name=nginx state=started

编写完成的Ansible Playbooks模块

Ansible playbooks常用模块案例操作

1.使用Git Bash

$ ssh root@47.98.198.241
# su - deploy

#启动py3.6的环境
# source  .py3-a2.5-env/bin/activate

#加载Ansible2.5版本
# source  .py3-a2.5-env/ansible/hacking/env-setup

#检查是否加载py3.6环境以及在该py3.6环境下加载了ansible-playbook 2.5
# ansible-playbook --version
2.ssh登录到目标主机

3.切换Ansible用户下

#编辑testbox主任务文件

# vi roles/testbox/tasks/main.yml

#测试编写的file模块任务,执行deploy.yml是否成功

# ansible-playbook -i inventory/testenv ./deploy.yml

运到错误:

还有这个错误:

解决办法:该目标主机没有foo用户,选择赋予其他用户权限和组

#测试成功Ansible playbooks常用的模块介绍

#已经创建ok的文件

3.切换Ansible用户下

#使用deploy用户创建
# mkdir roles/testbox/files

#编辑foo.sh并写入测试脚本
# vi roles/testbox/files/foo.sh
echo 'this is test script'
#测试ok的返回结果

4.添加Stat模块任务

#添加stat模块和debug模块
# vi roles/testbox/tasks/main.yml

- name: chenk if foo.sh exists
 stat: 'path=/root/foo.sh'
 register: script_stat

- debug: msg="foo.sh exists"
 when: script_stat.stat.exists

#测试是否成功
# ansible-playbook -i inventory/testenv ./deploy.yml

5.添加Stat模块任

#添加command模块远程执行主机
# vi roles/testbox/tasks/main.yml

- name: run the script
command:  "sh /root/foo.sh"

#测试是否成功
# ansible-playbook -i inventory/testenv ./deploy.yml

6.添加一个Template模块任

#编辑inventory/testenv文件添加参数值

server_name=test.example.com
port=80
user=deploy
worker_processes=4
max_open_file=65505
root=/www

7.创建templates目录文件

# mkdir roles/testbox/templates

# vi roles/testbox/templates/nginx.conf.j2

# vi roles/testbox/tasks/main.yml

# ansible-playbook -i hosts site.yml

本文分享自微信公众号 - V社 北京社(SoftwareTesters),作者:振宁

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jmeter Grafana监控资源

    Jmeter 原生的监控图形比较丑,最近在查找资源时发现Granfana 监控面板效果很好看,图形化界面监控指标,也适合在性能测试报告中使用,比如这样的

    Criss@陈磊
  • 一文教您如何通过 Docker 搭建 Ngnix,反向代理,并配置 Https 证书

    小哈最近收到阿里云短信,提示个站 www.exception.site 的云盾 SSL 证书(Https 证书)即将到期,需要赶快续费,不然无法继续使用 Htt...

    Criss@陈磊
  • 拉取一个nginx的容器

    PS:docker exec -it containerID /bin/bash 进入容器

    Criss@陈磊
  • 你不知道的javaScript笔记(2)

    this和对象原型 this是一个很特别的关键字,被自动定义在所有函数的作用域中 // foo.count 是0,字面理解是错误的     function f...

    用户1197315
  • ansible常用模块简单介绍

    本篇介绍下常用的模块。根据官方的分类,将模块按功能分类为:云模块、命令模块、数据库模块、文件模块、资产模块、消息模块、监控模块、网络模块、通知模块、包管理模块、...

    小小科
  • xms西软预定列表-房类市场

    landv
  • iOS开发·第三方数据库处理框架:Realm 基本用法

    陈满iOS
  • [golang][gui]Hands On GUI Application Development in Go

    与其说是go之旅,不如说是C,计算机世界的霸主C语言,有人可能说是汇编(ASM)才是,亲我说的是高级语言哈。不要抬杠,很多语言都是基于C的,搞了很多类C语言。

    landv
  • 为什么我们需要HTML5 WebSocket

        HTML5作为下一代的 Web 标准,它拥有许多引人注目的新特性,如 Canvas、本地存储、多媒体编程接口、WebSocket等等。这其中有“Web ...

    业余草
  • HTML滚动标签marquee的属性及效果实现

    slide从右往左滚动-停止 scroll从右往左循环 alternate从右往左再往右循环

    德顺

扫码关注云+社区

领取腾讯云代金券