Skip to content

Commit 522876e

Browse files
committed
add role for »NGINX JavaScript« CLI
Build NGINX JavaScript CLI with QuickJS support [1][2]. [1]: https://community.centminmod.com/threads/nginx-announce-njs-0-8-4.24972/ [2]: nginx/njs#698
1 parent 5982bd6 commit 522876e

File tree

5 files changed

+82
-0
lines changed

5 files changed

+82
-0
lines changed

group_vars/all.yml

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
nginx_version: 1.26.1
33
nginx_checksum: sha256:f9187468ff2eb159260bfd53867c25ff8e334726237acf227b9e870e53d3e36b
44

5+
njs_version: 0.8.4
6+
njs_checksum: sha256:fe197e254204c15e9f1df0acf375add57be3416901ec8d7b87319dccb490f90d
7+
58
modsecurity_version: 3.0.12
69
modsecurity_checksum: sha256:a36118401641feef376bb469bf468abf94b7948844976a188a6fccb53390b11f
710

roles/njs/defaults/main.yml

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
njs_version: null
3+
njs_checksum: null
4+
5+
njs_user: "{{ ansible_user }}"
6+
njs_user_home: "{{ ansible_user_dir }}"
7+
njs_src_directory: "{{ njs_user_home }}/src"

roles/njs/meta/main.yml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
dependencies:
3+
- role: quickjs

roles/njs/tasks/main.yml

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
- name: Ensure build dependencies are present.
3+
community.general.zypper:
4+
name:
5+
- gcc
6+
- gcc-c++
7+
- libedit
8+
- libopenssl-1_1-devel
9+
- libxslt-devel
10+
- make
11+
- pcre-devel
12+
- zlib-devel
13+
state: present
14+
become: true
15+
16+
- name: Ensure required directories are present.
17+
ansible.builtin.file:
18+
dest: "{{ item.dest }}"
19+
state: directory
20+
mode: "0700"
21+
loop:
22+
- { dest: "{{ njs_src_directory }}/download" }
23+
- { dest: "{{ njs_src_directory }}/njs/{{ njs_version }}" }
24+
- { dest: "{{ njs_user_home }}/bin" }
25+
26+
- name: Ensure »Nginx njs Module« source is present.
27+
ansible.builtin.get_url:
28+
url: https://github.com/nginx/njs/archive/refs/tags/{{ njs_version }}.tar.gz
29+
dest: "{{ njs_src_directory }}/download/njs-v{{ njs_version }}.tar.gz"
30+
checksum: "{{ njs_checksum }}"
31+
mode: "0600"
32+
33+
- name: Ensure »Nginx njs Module« source is extracted.
34+
ansible.builtin.unarchive:
35+
src: "{{ njs_src_directory }}/download/njs-v{{ njs_version }}.tar.gz"
36+
dest: "{{ njs_src_directory }}/njs/{{ njs_version }}"
37+
remote_src: true
38+
extra_opts:
39+
- --strip-components=1
40+
mode: u=rwX,g=,o=
41+
42+
- name: Get stats of Makefile
43+
ansible.builtin.stat:
44+
path: "{{ njs_src_directory }}/njs/{{ njs_version }}/Makefile"
45+
register: njs_makefile_stat
46+
47+
- name: Check if './configure' must be executed.
48+
ansible.builtin.set_fact:
49+
njs_makefile_missing: "{{ not njs_makefile_stat.stat.exists }}"
50+
51+
- name: Run './configure'.
52+
ansible.builtin.command:
53+
argv: ['./configure', '--cc-opt=-I{{ njs_user_home }}/include/quickjs -L{{ njs_user_home }}/lib/quickjs']
54+
chdir: "{{ njs_src_directory }}/njs/{{ njs_version }}"
55+
when: njs_makefile_missing
56+
changed_when: njs_makefile_missing
57+
58+
- name: Ensure artifacts are build.
59+
community.general.make:
60+
chdir: "{{ njs_src_directory }}/njs/{{ njs_version }}"
61+
jobs: "{{ (ansible_processor_nproc * 0.75) | round(0, 'floor') | int }}"
62+
63+
- name: Ensure »njs« is present.
64+
ansible.builtin.copy:
65+
src: "{{ njs_src_directory }}/njs/{{ njs_version }}/build/njs"
66+
dest: "{{ njs_user_home }}/bin/njs"
67+
mode: u=rwx,g=,o=
68+
remote_src: true

webservers.yml

+1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44

55
roles:
66
- role: nginx
7+
- role: njs
78
- role: logrotate
89
- role: iptables

0 commit comments

Comments
 (0)