Browse Source

Merge pull request #118 from grobinson-blockchain/master

Build from source with nginx.ng
tags/v0.55.0
Forrest 8 years ago
parent
commit
d9002d397f
8 changed files with 127 additions and 10 deletions
  1. +8
    -0
      nginx/ng/config.sls
  2. +15
    -0
      nginx/ng/files/nginx.service
  3. +6
    -0
      nginx/ng/init.sls
  4. +6
    -0
      nginx/ng/map.jinja
  5. +2
    -6
      nginx/ng/pkg.sls
  6. +20
    -3
      nginx/ng/service.sls
  7. +62
    -0
      nginx/ng/src.sls
  8. +8
    -1
      pillar.example

+ 8
- 0
nginx/ng/config.sls View File



{% from 'nginx/ng/map.jinja' import nginx, sls_block with context %} {% from 'nginx/ng/map.jinja' import nginx, sls_block with context %}


{% if nginx.install_from_source %}
nginx_log_dir:
file.directory:
- name: /var/log/nginx
- user: {{ nginx.server.config.user }}
- group: {{ nginx.server.config.user }}
{% endif %}

nginx_config: nginx_config:
file.managed: file.managed:
{{ sls_block(nginx.server.opts) }} {{ sls_block(nginx.server.opts) }}

+ 15
- 0
nginx/ng/files/nginx.service View File

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

+ 6
- 0
nginx/ng/init.sls View File

# #
# Meta-state to fully install nginx. # Meta-state to fully install nginx.


{% from 'nginx/ng/map.jinja' import nginx, sls_block with context %}

include: include:
- nginx.ng.config - nginx.ng.config
- nginx.ng.service - nginx.ng.service
nginx_config: nginx_config:
file: file:
- require: - require:
{% if nginx.install_from_source %}
- cmd: nginx_install
{% else %}
- pkg: nginx_install - pkg: nginx_install
{% endif %}

+ 6
- 0
nginx/ng/map.jinja View File

'install_from_ppa': False, 'install_from_ppa': False,
'install_from_repo': False, 'install_from_repo': False,
'ppa_version': 'stable', 'ppa_version': 'stable',
'source_version': '1.10.0',
'source_hash': '8ed647c3dd65bc4ced03b0e0f6bf9e633eff6b01bac772bcf97077d58bc2be4d',
'source': {
'opts': {},
'modules': {}
},
'package': { 'package': {
'opts': {}, 'opts': {},
}, },

nginx/ng/install.sls → nginx/ng/pkg.sls View File

# nginx.ng.install
# nginx.ng.pkg
# #
# Manages installation of nginx.
# Manages installation of nginx from pkg.


{% from 'nginx/ng/map.jinja' import nginx, sls_block with context %} {% from 'nginx/ng/map.jinja' import nginx, sls_block with context %}


nginx_install: nginx_install:
{% if nginx.install_from_source %}
## add source compilation here
{% else %}
pkg.installed: pkg.installed:
{{ sls_block(nginx.package.opts) }} {{ sls_block(nginx.package.opts) }}
- name: {{ nginx.lookup.package }} - name: {{ nginx.lookup.package }}
{% endif %}


{% if salt['grains.get']('os_family') == 'Debian' %} {% if salt['grains.get']('os_family') == 'Debian' %}
{%- if nginx.install_from_repo %} {%- if nginx.install_from_repo %}

+ 20
- 3
nginx/ng/service.sls View File

{% set service_function = {True:'running', False:'dead'}.get(nginx.service.enable) %} {% set service_function = {True:'running', False:'dead'}.get(nginx.service.enable) %}


include: include:
- nginx.ng.install
{% if nginx.install_from_source %}
- nginx.ng.src
{% else %}
- nginx.ng.pkg
{% endif %}

{% if nginx.install_from_source %}
nginx_systemd_service_file:
file.managed:
- name: /lib/systemd/system/nginx.service
- source: salt://nginx/ng/files/nginx.service
{% endif %}
nginx_service: nginx_service:
service.{{ service_function }}: service.{{ service_function }}:
- name: {{ nginx.lookup.service }} - name: {{ nginx.lookup.service }}
- enable: {{ nginx.service.enable }} - enable: {{ nginx.service.enable }}
- require: - require:
- sls: nginx.ng.install
{% if nginx.install_from_source %}
- sls: nginx.ng.src
{% else %}
- sls: nginx.ng.pkg
{% endif %}
- watch: - watch:
{% if not nginx.install_from_source %}
{% if nginx.install_from_source %}
- cmd: nginx_install
{% else %}
- pkg: nginx_install - pkg: nginx_install
{% endif %} {% endif %}

+ 62
- 0
nginx/ng/src.sls View File

# nginx.ng.src
#
# Manages installation of nginx from source.

{% from 'nginx/ng/map.jinja' import nginx, sls_block with context %}

nginx_build_dep:
{% if salt['grains.get']('os_family') == 'Debian' %}
cmd.run:
- name: apt-get -y build-dep nginx
{% elif salt['grains.get']('os_family') == 'RedHat' %}
cmd.run:
- name: yum-builddep -y nginx
{% else %}
## install build deps for other distros
{% endif %}

nginx_download:
archive.extracted:
- name: /tmp/
- source: http://nginx.org/download/nginx-{{ nginx.source_version }}.tar.gz
- source_hash: sha256={{ nginx.source_hash }}
- archive_format: tar
- if_missing: /usr/sbin/nginx-{{ nginx.source_version }}
- require:
- cmd: nginx_build_dep
- onchanges:
- cmd: nginx_build_dep

nginx_configure:
cmd.run:
- name: ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf {{ nginx.source.opts | join(' ') }}
- cwd: /tmp/nginx-{{ nginx.source_version }}
- require:
- archive: nginx_download
- onchanges:
- archive: nginx_download

nginx_compile:
cmd.run:
- name: make
- cwd: /tmp/nginx-{{ nginx.source_version }}
- require:
- cmd: nginx_configure

nginx_install:
cmd.run:
- name: make install
- cwd: /tmp/nginx-{{ nginx.source_version }}
- require:
- cmd: nginx_compile
- onchanges:
- cmd: nginx_compile

nginx_link:
file.copy:
- name: /usr/sbin/nginx-{{ nginx.source_version }}
- source: /usr/sbin/nginx
- require:
- cmd: nginx_install
- onchanges:
- cmd: nginx_install

+ 8
- 1
pillar.example View File



nginx: nginx:
ng: ng:
# PPA installing
# PPA install
install_from_ppa: True install_from_ppa: True
# Set to 'stable', 'development' (mainline), 'community', or 'nightly' for each build accordingly ( https://launchpad.net/~nginx ) # Set to 'stable', 'development' (mainline), 'community', or 'nightly' for each build accordingly ( https://launchpad.net/~nginx )
ppa_version: 'stable' ppa_version: 'stable'

# Source install
source_version: '1.10.0'
source_hash: ''
# These are usually set by grains in map.jinja # These are usually set by grains in map.jinja
lookup: lookup:
# Source compilation is not currently a part of nginx.ng # Source compilation is not currently a part of nginx.ng
from_source: False from_source: False


source:
opts: {}

package: package:
opts: {} # this partially exposes parameters of pkg.installed opts: {} # this partially exposes parameters of pkg.installed



Loading…
Cancel
Save