ansible nginx installer

ansible 官方网站建议playbook剧本机构如下

目录结构

production     #正式环境inventory文件    
	staging        #测试环境用的inventory文件  
	group_vars /   #机器组的变量文件
		   group1
		   group2
	hosts_vars /   #执行机器成员的变量
		   hostname1
		   hostname2
	= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
	site.yml			# 主要的playbook剧本文件
	webservers.yml      # webserver类型服务所用的剧本
	dbservers.yml       # 数据库类型的服务所用的剧本
	
	roles/                  
			webservers/        # webservers这个角色相关任务和自定义变量
				tasks/         # 存放任务文件目录
					main.yml   # 存放任务信息的
				handlers/      #
					main.yml   #	
				vars/          # 变量的目录 特定的变量目录
					main.yml   # 里面记录详细变量
			dbservers/         # dbservers这个角色相关任务和自定义变量
				...
		common/				   # 公共的
			tasks/             #  公共任务目录
				main.yml       #
			handlers/          #
				main.yml       # handlers file
			vars/              # 角色所用的变量
				main.yml       #
	= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =			
		templates/             #
			ntp.conf.j2        # 用于模板文件
		file/                  # 用于存放文件的目录
			bar.txt            #
			fool.sh            #
		meta/                  #  角色的依赖
			main.yml		   #  

 

Nginx 工程方式的编译安装
1 场景剧本分解
2 剧本分解
.
├── files
│   ├── index.html
│   ├── nginx
│   └── nginx-1.12.3.tar.gz
├── production
├── roles
│   ├── apache
│   ├── common
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── vars
│   │   └── main.yml
│   ├── handlers
│   ├── meta
│   ├── nginx
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   ├── base.yml
│   │   │   ├── main.yml
│   │   │   └── nginx.yml
│   │   └── vars
│   │   └── main.yml
│   └── tasks
├── staging
├── templates
│   └── nginx.conf
├── webserver.retry
└── webserver.yml

    2 剧本分解
		
    ├── ansible.cfg      #ansible主配置文件
    ├── files            #存放上传文件
    ├── production       #线上的主机配置文件
    ├── roles            #roles角色执行
    ├── staging          #线下测试环境使用主机配置文件
    ├── templates        #模板(配置、html) 
    └── webserver.yml    # web服务相关主执行文件

 

  files目录结构
	#tree -L 1
	.
    ├── index.html            #测试用的html文件
    ├── nginx                 #系统init中,控制nginx启动脚本文件
    └── nginx-1.12.3.tar.gz   #nginx的安装包文件

  

  templates 目录结构
	#tree -L 1
    .
    └── nginx.conf             # nginx的自定义conf文件

  

roles 目录结构
    .
    ├── apache                  
    ├── common                 #公共目录 
    │   ├── tasks                  
    │   │   └── main.yml                  
    │   └── vars                  
    │       └── main.yml        #变量目录 放在common里面               
    ├── handlers                  
    ├── meta                                    
    ├── nginx                  
    │   ├── handlers           #handlers通过notify触发
    │   │   └── main.yml       #
    │   ├── tasks              # 剧本配置问阿金     
    │   │   ├── base.yml       #基本配置任务          
    │   │   ├── main.yml                  
    │   │   └── nginx.yml                  
    │   └── vars                  
    │       └── main.yml                  
    └── tasks  

 

远程机器 安装基本环节包
  yum install  gcc openssl-devel   环境包 
 环境配置案例模板
/etc/ansible/palybook/production    #主机配置文件hosts文件
    [nginx_hosts]
    192.168.192.1 ansible_ssh_prot=22 ansible_ssh_user=root ansible_ssh_pass='123456'
    [nginx_hsots:vars]
    filename=hostname

/etc/ansible/palybook/webserver.yml  #配置文件
 ---
 - hosts : nginx_hosts
   remote_user : root
   roles :
		- common
		- {rele: nginx, tags:nginx }

/etc/ansible/palybook/roles/common/vars/main.yml    #安装程序 定义安装目录及环境变量
 download_dir : /opt/download  #上传到目标主机目录
 app_dir : /opt/app            # 安装程序目录

/etc/ansible/palybook/roles/nginx/tasks/main.yml    #导入其他的配置文件安装模块
 ---
  - include_tasks : basic.yml
  - include_tasks : nginx.yml

/etc/ansible/palybook/roles/nginx/tasks/basic.yml   #安装相应的软件包
  ---
   - name : install basic parket for  nginx
     yum : name={{ item}} state=latest
	 with_items :
	     - gcc-c++
		 - openssl-devel
		 - pcre
		 - pcre-devel

/etc/ansible/palybook/roles/nginx/tasks/nginx.yml   #  nginx程序编译安装过程
 ---
  - name : zunip nginx parket to remote hsots
    unarchive : src=/nginx-1.12.2.tar.gz  dest={{download_dir}}
	name : make install nginx
	shell : cd {{download_dir}}/nginx-1.12.2/ && ./confgure --prefile={{app_dir}}/nginx --with-http_ssl_module --with-http_stub_status_module && make && mak install
  - name : copy a test html file to remote hosts
    copy src=index.html  dest={{app_dir}}/nginx/html/
  - name : copy  nginx config file  to remote hosts
    templates : src=nginx.conf   dest={{app_dir}}/nginx/conf/nginx.conf
	notify:
	     - restar nginx service
  - name : ensure nginx srvice is running
    service : name=nginx state=started      

/etc/ansible/palybook/roles/nginx/tasks/handlers/main.yml  # 定义的是程序重启服务 handlers
 name : restart nginx service 
 service : name=nginx state=restarted 

ansible-playbook -i /etc/ansible/palybook/production /etc/ansible/palybook/webservers.yml   #执行安装过程测试
 
温馨提示
netstat -luntp|grep nginx  #check nginx 服务是否正常 

  

posted @ 2019-04-08 14:58  Boks  阅读(111)  评论(0)    收藏  举报