这篇文章将继续给大家介绍Jenkins+Ansible+GitLab持续交付平台搭建。 Jenkins+Ansible+GitLab持续交付平台搭建-第1篇 Jenkins+Ansible+GitLab持续交付平台搭建-第2篇 Jenkins+Ansible+GitLab持续交付平台搭建-第3篇 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./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 1$ ssh root@47.98.198.241 2.ssh登录到目标主机 1# ssh root@47.98.198.241 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用户下 1#使用deploy用户创建 4.添加Stat模块任务 1#添加stat模块和debug模块 5.添加Stat模块任 1#添加command模块远程执行主机 6.添加一个Template模块任 1#编辑inventory/testenv文件添加参数值 7.创建templates目录文件 1# mkdir roles/testbox/templates 此系列会在我们TestOps公众号定期更新,请随时关注哟~ |
|