ansible角色role间的互相调用和标签tags的使用
前面熟悉了角色的基本使用:基本思想就是模块化,将不同的东西分类放到不同的文件夹里,管理起来更清晰
前面通过角色在nginx里面定义了多个任务包括模版的使用已经介绍了
如果要定义别的角色,比如httpd这个角色
我们现在要在httpd这个角色中搭建httpd,实现httpd服务,httpd服务和nginx是同一个类型的web服务,通常不会在一个主机上同时实现httpd和nginx服务,一般要实现的是不同的服务,httpd也可以实现类似的功能,比如建立httpd的用户,把包装好,然后把服务启动,配置httpd
查看testB上有没有apache账户:
可以发现这里的testB组里的server2主机是
卸载httpd服务,删除apache用户
ansible testB -m shell -a "yum remove -y httpd"
使用ansible的user删掉apache用户(同时删掉家目录(删掉用户的数据)remove=yes):
ansible testB -m user -a "name=apache state=absent remove=yes"
环境现在干净了,服务删了,帐号也不存在了
1.要建立apache账户
cat user.yml
- name: create user
user: name=apache system=yes shell=/sbin/nologin
#system=yes 让用户具有系统的信息,要指定系统属性,还要指定用户是伪用户(一直不登陆shell=/sbin/nologin,是为了进程和文件需要的),之前指定过uid
这里的组就不指定了,因为用户创建的时候,组自动就创建好了
将创建的user.yml放到tasks模块中
2.部署软件:
apache可以使用yum安装,也可以使用编译安装,
编译安装的时候,不用在所有的主机上编译,我们现在一个和需要部署的主机系统版本相同的主机上创建好所有编译安装好的所有数据,然后把这些安装目录打包(tar)传到目标主机上就好了,目标主机的版本应该是一样的,传过去后,直接把里面的程序启动起来就可以了
我们现在假设模拟这个过程,现在将这些文件给它复制过去,我们应该使用一个copy:
如果只使用tasks目录的话,这里的copyfile.yml剧本文件里面的file模块的src参数是需要写绝对路径的,将我们数据文件放在files这个目录下,则tasks模块中的copy.yml剧本的src参数只需要写包的名字即可
我们将我们打包好的包(所有编译安装好的所有数据)
rpm -qa httpd
httpd-2.4.6-45.el7.x86_64
cp /etc/httpd/conf/httpd.conf