学海无涯
go,go,go

ansible使用roles安装nginx

创建roles角色目录
[root@ansible ansible]# mkdir /ansible/roles -p
[root@ansible ansible]# ls
roles

#创建不同的角色目录,可以对不同服务器使用不同的角色
[root@ansible roles]# mkdir -p /ansible/roles/{nginx,memcached}
[root@ansible roles]# ls
memcached  nginx

#创建任务目录要执行的剧本放在tasks里面,模板放在templates里面也可以创建变量的目录vras
[root@ansible roles]# mkdir /ansible/roles/nginx/{tasks,templates} -p

#在tasks创建nginx的剧本,创建组添加,创建用户和安装包的剧本,启动服务的剧本
[root@ansible nginx]# touch /ansible/roles/nginx/tasks/{groupadd.yml,useradd.yml,install.yml,start.yml}
[root@ansible nginx]# cd /ansible/roles/nginx/tasks/
[root@ansible tasks]# ls
groupadd.yml  install.yml  start.yml  useradd.yml

#编写创建组的剧本,已经在tasks目录所以直接写模块和模块的名称就可以了
[root@ansible tasks]# cat groupadd.yml
- name: add group
  group: name=nginx

#编写创建用户的剧本,已经在tasks目录所以直接写模块和模块的名称就可以了
[root@ansible tasks]# cat useradd.yml
- name: create user
  user: name=nginx group=nginx system=yes shell=/sbin/nologin

#编写安装的剧本,已经在tasks目录所以直接写模块和模块的名称就可以了
[root@ansible tasks]# cat install.yml 
- name: install package
  yum: name=nginx

#编写启动服务的剧本,已经在tasks目录所以直接写模块和模块的名称就可以了
[root@ansible tasks]# cat start.yml
- name: start service
  service: name=nginx state=started enabled=yes

#编写main.yml告诉那个剧本要执行,执行顺序,默认使用角色功能只认main.yml这个文件里面的剧本执行顺序
[root@ansible tasks]# cat main.yml
- import_tasks: groupadd.yml
- import_tasks: useradd.yml
- import_tasks: install.yml
- import_tasks: start.yml

编写调用nginx的角色的剧本,和roles这个文件夹是同及关系
[root@ansible ansible]# cat nginx-role.yml
- hosts: web
  remote_user: root

  roles:
    - role: nginx
=======================================
- hosts: web
  remote_user: root

  roles: 使用roles模块调用角色这里调用nginx的角色
    - role: nginx  指定调用的角色可以调用多个角色,写多个role
=======================================


#执行剧本调用nginx的角色
[root@ansible ansible]# ansible-playbook nginx-role.yml 

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

TASK [Gathering Facts] ************************************************************************************************************************************************************************
ok: [192.168.2.189]
ok: [192.168.2.196]

TASK [nginx : add group] **********************************************************************************************************************************************************************
ok: [192.168.2.189]
ok: [192.168.2.196]

TASK [nginx : create user] ********************************************************************************************************************************************************************
ok: [192.168.2.196]
ok: [192.168.2.189]

TASK [nginx : install package] ****************************************************************************************************************************************************************
changed: [192.168.2.189]
changed: [192.168.2.196]

TASK [nginx : start service] ******************************************************************************************************************************************************************
fatal: [192.168.2.189]: FAILED! => {"changed": false, "msg": "Unable to start service nginx: Job for nginx.service failed because the control process exited with error code. See \"systemctl status nginx.service\" and \"journalctl -xe\" for details.\n"}
fatal: [192.168.2.196]: FAILED! => {"changed": false, "msg": "Unable to start service nginx: Job for nginx.service failed because the control process exited with error code. See \"systemctl status nginx.service\" and \"journalctl -xe\" for details.\n"}

PLAY RECAP ************************************************************************************************************************************************************************************
192.168.2.189              : ok=4    changed=1    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   
192.168.2.196              : ok=4    changed=1    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   

#检查安装成功
[root@ansible ansible]# ansible web -m shell -a 'rpm -q nginx'
[WARNING]: Consider using the yum, dnf or zypper module rather than running 'rpm'.  If you need to use command because yum, dnf or zypper is insufficient you can add 'warn: false' to this
command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.

192.168.2.196 | CHANGED | rc=0 >>
nginx-1.16.1-1.el7.x86_64

192.168.2.189 | CHANGED | rc=0 >>
nginx-1.16.1-1.el7.x86_64
赞(0) 打赏
未经允许不得转载:YYQ运维技术博客_运维的工作学习之路 » ansible使用roles安装nginx
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

运维devops

联系我们关于本博客

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏