Ansible-roles

Ansible-roles

一、roles作用

复制代码
把playbook剧本里的各个play看作为角色,将各个角色的tasks任务、vars变量、templates模板、files文件等内容放置到角色的目录中统一管理,需要的时候可在playbook中直接使用roles调用,所以roles可以实现playbook代码的复用。

二、利用roles安装lnmp

复制代码
ansible主机地址:192.168.111.10

vim /etc/ansible/hosts
[nginx]
192.168.111.20
[mysql]
192.168.111.30
[php]
192.168.111.40

1.在roles创建角色目录

复制代码
mkdir /etc/ansible/roles/nginx/{files,templates,tasks,handlers,vars,defaults,meta} -p

mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p

mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -p

2.创建角色的的配置文件

复制代码
touch /etc/ansible/roles/nginx/{defaults,vars,tasks,meta,handlers}/main.yml

touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml

touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml

3.配置nginx角色

在file目录中添加配置文件

复制代码
default.conf nginx.repo index.php

在tasks目录中创建main.yaml,ini.yaml文件

复制代码
vim main.yaml
- include: "init.yml"

- name: copy nginx.repo
  copy: src=nginx.repo dest=/etc/yum.repos.d/

- name: install nginx
  yum: name=nginx 
- name: copy
  copy: src=default.conf dest=/etc/nginx/conf.d/default.conf
- name: index.php
  copy: src=index.php dest=/usr/share/nginx/html
- name: start nginx
  service: name=nginx state=started

vim init.yaml
- name: stop firewalld
  service: name=firewalld state=stopped 
- name: stop setenforce
  command: '/usr/sbin/setenforce 0'
  ignore_errors: True

4.配置mysql角色

在file目录中添加配置文件

复制代码
vim mysql.sh
passd=$(grep "password" /var/log/mysqld.log | awk '{print $NF}'| head -1)
mysql -uroot -p"$passd" --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';"
mysql -uroot -pAdmin@123 -e "grant all privileges on *.* to root@'%' identified by 'Admin@123' with grant option;"

mysql-community.repo   mysql-community-source.repo

在tasks目录中配置main.yaml文件

复制代码
vim main.yaml

- include: "init.yml"

- name: copy mysql.repo
  copy: src=mysql-community.repo dest=/etc/yum.repos.d/
- name: copy
  copy: src=mysql-community-source.repo dest=/etc/yum.repos.d/
- name: install mysql-server
  yum: name=mysql-server
- name: start mysql
  service: name=mysqld.service state=started
- name: chushihua 
  script: mysql.sh
  ignore_errors: True

5.配置php角色

在file目录中添加配置文件

复制代码
vim index.php
<?php
phpinfo();
?>

在tasks目录中配置main.yaml文件

复制代码
vim init.yaml

- name: stop firewalld
  service: name=firewalld state=stopped 
- name: stop setenforce
  command: '/usr/sbin/setenforce 0'
  ignore_errors: True

- include: "init.yml"

- name: install php.repo
  shell: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm && rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  ignore_errors: True
- name: install php
  shell: yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache
  ignore_errors: True


- name: user
  user: name=php
- name: web 
  file: name=/usr/share/nginx/html state=directory

#- name: index.php

#  copy: src=index.php dest=/usr/share/nginx/html/

- name: modify php configuration file
  replace: path=/etc/php.ini  regexp=";date.timezone ="  replace="date.timezone = Asia/Shanghai"
- name: modify username and groupname in www.conf
  replace: path=/etc/php-fpm.d/www.conf  regexp="apache"  replace="php"
- name: modify listen addr in www.conf
  replace: path=/etc/php-fpm.d/www.conf  regexp="127.0.0.1:9000"  replace="192.168.111.40:9000"
- name: modify allowed client in www.conf
  replace: path=/etc/php-fpm.d/www.conf  regexp="127.0.0.1"  replace="192.168.111.20"

- name: start php-fpm 
  service: name=php-fpm state=started

6.配置主文件lnmp.yaml

复制代码
vim lnmp.yaml
- name: nginx play
  hosts: nginx
  remote_user: root
  roles:
  - nginx

- name: mysql play
  hosts: mysql
  remote_user: root
  roles:
  - mysql

- name: php play
  hosts: php
  remote_user: root
  roles:
  - php
相关推荐
我又来搬代码了1 分钟前
【Android】【Compose】Compose知识点复习(一)
android·前端·kotlin·android studio
fatiaozhang95278 分钟前
九联UNP-SJA8-国科GK6323V100C-2+8G-安卓9.0-原厂强刷固件包-可救砖及开ADB教程
android·adb·电视盒子·刷机固件·机顶盒刷机·机顶盒刷机固件·九联unp-sja8
似霰27 分钟前
传统 Hal 开发笔记4----实现 Hal 模块
android·hal
Android出海1 小时前
Google Play正式出手整治后台耗电应用
android·新媒体运营·产品运营·流量运营·用户运营
Winter_Sun灬1 小时前
CentOS7 交叉编译 ACE+TAO-6.5.13 安卓 arm64-v8a 静态库
android·ace
Digitally1 小时前
4种有效方法:如何将音乐从Mac传输到Android
android
CheungChunChiu1 小时前
Android 多媒体体系完整总结
android
晓13131 小时前
SQL篇——【MySQL篇:运维】高可用架构搭建(主从、读写分离、分库分表)
android·数据库·mysql
阳光的科技狗1 小时前
Android、谷歌、高通的前世今生
android·谷歌·高通
xunyan62342 小时前
面向对象(下)-接口应用:代理模式 && 工厂模式
android·java·学习