Ansible一键部署roles-nginx静态-nginx动态

Ansible 基于Python开发
不适合没技术的人观看
操作无任何坑 后期可以配合zabbix 自动发现(自动注册)关联模板 实施一键完成部署

1 目录结构解释

ls /etc/ansible/
ansible.cfg 主配
hosts 主机清单
playbook.yaml 可以是任意名字 .yam yaml结尾
reles 定义角色目录可以是任何名字
└── roles
├── nginx.yaml
└── roles
└── nginx
├── files
│ ├── index.html
│ └── index.php
├── handlers
├── tasks
│ └── main.yaml
├── templates
│ ├── php_server.conf.j2
│ ├── server.conf.j2
│ └── www.conf.j2
└── vars
└── main.yaml
files copy的文件 这里放的是主页
handlers 触发模板(定义触发内容 可以在里面触发)此操作没用触发器所以为空
tasks 主要的 yaml 操作
templates 存放模板 这里放的是配置文件 playbook 可以直接调用
vars 变量 全局变量可以定义到配置文件中

使用机器

使用三台机器
ansible 192.168.1.18 主机名 w18
web 192.168.1.19 主机名 w19
web1 192.168.1.20 主机名 w20

本地hosts

vim /etc/hosts
192.168.1.19 web
192.168.1.20 web1

anisble hosts

vim /etc/ansible/hosts
[webs]
web aisible_ssh_pass=“1”
web1 aisible_ssh_pass=“1”


web 走静态 web1走动态


cat roles/nginx/tasks/main.yam

  • name: install epel-release
    yum: name=epel-release.noarch state=present

  • name: install nginx
    yum: name=nginx state=present

  • name: install php-fpm
    yum: name=php-fpm state=present
    when: ansible_hostname == ‘w19’

  • name: install php-fpm_conf
    template: src=www.conf.j2 dest=/etc/php-fpm.d/www.conf
    when: ansible_hostname == ‘w19’

  • name: install http_server_conf
    template: src=server.conf.j2 dest=/etc/nginx/nginx.conf
    when: ansible_hostname == ‘w20’

  • name: install php_server_conf
    template: src=php_server.conf.j2 dest=/etc/nginx/nginx.conf
    when: ansible_hostname == ‘w19’

  • name: mkdir directory
    file: name={{ index_root }} state=directory

  • name: cp file
    copy: src=index.html dest={{ index_root }}
    when: ansible_hostname == ‘w20’

  • name: cp php_file
    copy: src=index.php dest={{ index_root }}
    when: ansible_hostname == ‘w19’

  • name: start nginx
    service: name=nginx state=started

  • name: start php-fpm
    service: name=php-fpm state=started
    when: ansible_hostname == ‘w19’


cat roles/nginx/files/index.html
jun nginx

cat roles/nginx/files/index.php

<?php phpinfo(); ?>

cat roles/nginx/vars/main.yaml
index_root: /web1/
变量根据自己需要 可以定义到配置文件中


ls roles/nginx/templates/
php_server.conf.j2 server.conf.j2 www.conf.j2


php_server.conf.j2 为 web 动态的 nginx 配置文件
server.conf.j2 为web1 静态的nginx配置文件
www.conf.j2 为 web 动态的php 配置文件
可以根据 需求 定义 vars 下的变量 和更改配置文件内容
PHP 版本为 PHP 5.4.16
nginx 版本为 nginx/1.16.1

子配置文件 有点多就不放了 需要留言
一起学习

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Ansible角色是Ansible中的一种组织方式,它是一组任务、变量、文件和模板的集合,用于实现某个特定功能。在这个问题中,我们可以使用Ansible角色来部署LNMP(LinuxNginx、MySQL和PHP)堆栈。 以下是一个简单的LNMP Ansible角色部署示例: 1. 创建一个名为“lnmp”的Ansible角色目录: ``` mkdir roles/lnmp ``` 2. 在lnmp目录中创建一个tasks目录: ``` mkdir roles/lnmp/tasks ``` 3. 在tasks目录中创建一个main.yml文件,其中包含以下任务: ``` - name: Install Nginx yum: name: nginx state: present - name: Start Nginx service service: name: nginx state: started - name: Install MySQL yum: name: mysql-server state: present - name: Start MySQL service service: name: mysqld state: started - name: Install PHP yum: name: php state: present - name: Install PHP-FPM yum: name: php-fpm state: present - name: Start PHP-FPM service service: name: php-fpm state: started ``` 这些任务将安装和启动Nginx、MySQL和PHP-FPM服务。 4. 在lnmp目录中创建一个vars目录: ``` mkdir roles/lnmp/vars ``` 5. 在vars目录中创建一个main.yml文件,其中包含以下变量: ``` --- nginx_conf_file: /etc/nginx/nginx.conf mysql_root_password: mysecretpassword php_conf_dir: /etc/php.d/ ``` 这些变量将用于配置Nginx、MySQL和PHP的设置。 6. 在lnmp目录中创建一个templates目录: ``` mkdir roles/lnmp/templates ``` 7. 在templates目录中创建一个nginx.conf.j2模板文件: ``` worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; server_name localhost; location / { root /var/www/html; index index.php index.html index.htm; } location ~ \.php$ { root /var/www/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } } ``` 这个模板将用于生成Nginx的配置文件。 8. 在tasks目录中创建一个configure.yml文件,其中包括以下任务: ``` - name: Copy Nginx configuration file template: src: nginx.conf.j2 dest: "{{ nginx_conf_file }}" mode: '0644' - name: Set MySQL root password mysql_user: name: root password: "{{ mysql_root_password }}" login_unix_socket: /var/lib/mysql/mysql.sock - name: Copy PHP configuration file copy: src: php.ini dest: "{{ php_conf_dir }}" mode: '0644' ``` 这些任务将生成Nginx配置文件、设置MySQL root密码和复制PHP配置文件。 9. 在lnmp目录中创建一个files目录: ``` mkdir roles/lnmp/files ``` 10. 在files目录中创建php.ini文件: ``` memory_limit = 128M upload_max_filesize = 64M post_max_size = 64M ``` 这个文件将被复制到PHP配置目录中。 11. 在lnmp目录中创建一个meta目录: ``` mkdir roles/lnmp/meta ``` 12. 在meta目录中创建一个main.yml文件,其中包含以下元数据: ``` --- dependencies: - { role: geerlingguy.repo-epel } - { role: geerlingguy.mysql } ``` 这些元数据将指定依赖项,以便安装EPEL存储库和MySQL角色。 13. 在playbook中使用lnmp角色: ``` - hosts: webserver become: true roles: - lnmp ``` 这个playbook将在webserver主机上使用lnmp角色。 这就是一个简单的LNMP Ansible角色部署示例。当然,还有很多其他的配置选项和任务可以添加到这个角色中,以满足不同的需求。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值