Skip to content

Commit 29c83f5

Browse files
authored
Merge pull request #6 from f500/ansible-lint
Add ansible lint pr workflow
2 parents 9ebfc3d + 6f66b79 commit 29c83f5

File tree

6 files changed

+176
-18
lines changed

6 files changed

+176
-18
lines changed

.ansible-lint

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
---
2+
# .ansible-lint
3+
4+
profile: production # min, basic, moderate,safety, shared, production
5+
6+
# Allows dumping of results in SARIF format
7+
# sarif_file: result.sarif
8+
9+
# exclude_paths included in this file are parsed relative to this file's location
10+
# and not relative to the CWD of execution. CLI arguments passed to the --exclude
11+
# option are parsed relative to the CWD of execution.
12+
exclude_paths:
13+
- .github/
14+
- .ansible-lint
15+
# parseable: true
16+
# quiet: true
17+
# strict: true
18+
# verbosity: 1
19+
20+
# Mock modules or roles in order to pass ansible-playbook --syntax-check
21+
#mock_modules:
22+
# - zuul_return
23+
# note the foo.bar is invalid as being neither a module or a collection
24+
# - fake_namespace.fake_collection.fake_module
25+
# - fake_namespace.fake_collection.fake_module.fake_submodule
26+
#mock_roles:
27+
# - mocked_role
28+
# - author.role_name # old standalone galaxy role
29+
# - fake_namespace.fake_collection.fake_role # role within a collection
30+
31+
# Enable checking of loop variable prefixes in roles
32+
loop_var_prefix: "^(__|{role}_)"
33+
34+
# Enforce variable names to follow pattern below, in addition to Ansible own
35+
# requirements, like avoiding python identifiers. To disable add `var-naming`
36+
# to skip_list.
37+
var_naming_pattern: "^[a-z_][a-z0-9_]*$"
38+
39+
use_default_rules: true
40+
# Load custom rules from this specific folder
41+
# rulesdir:
42+
# - ./rule/directory/
43+
44+
# Ansible-lint is able to recognize and load skip rules stored inside
45+
# `.ansible-lint-ignore` (or `.config/ansible-lint-ignore.txt`) files.
46+
# To skip a rule just enter filename and tag, like "playbook.yml package-latest"
47+
# on a new line.
48+
# Optionally you can add comments after the tag, prefixed by "#". We discourage
49+
# the use of skip_list below because that will hide violations from the output.
50+
# When putting ignores inside the ignore file, they are marked as ignored, but
51+
# still visible, making it easier to address later.
52+
skip_list:
53+
- risky-shell-pipe
54+
# - skip_this_tag
55+
56+
# Ansible-lint does not automatically load rules that have the 'opt-in' tag.
57+
# You must enable opt-in rules by listing each rule 'id' below.
58+
enable_list:
59+
- args
60+
- empty-string-compare # opt-in
61+
- no-log-password # opt-in
62+
- no-same-owner # opt-in
63+
- name[prefix] # opt-in
64+
- galaxy-version-incorrect # opt-in
65+
# add yaml here if you want to avoid ignoring yaml checks when yamllint
66+
# library is missing. Normally its absence just skips using that rule.
67+
- yaml
68+
# Report only a subset of tags and fully ignore any others
69+
# tags:
70+
# - jinja[spacing]
71+
72+
# Ansible-lint does not fail on warnings from the rules or tags listed below
73+
#warn_list:
74+
# - skip_this_tag
75+
# - experimental # experimental is included in the implicit list
76+
# - role-name
77+
# - yaml[document-start] # you can also use sub-rule matches
78+
79+
# Some rules can transform files to fix (or make it easier to fix) identified
80+
# errors. `ansible-lint --fix` will reformat YAML files and run these transforms.
81+
# By default it will run all transforms (effectively `write_list: ["all"]`).
82+
# You can disable running transforms by setting `write_list: ["none"]`.
83+
# Or only enable a subset of rule transforms by listing rules/tags here.
84+
# write_list:
85+
# - all
86+
87+
# Offline mode disables installation of requirements.yml and schema refreshing
88+
offline: true
89+
90+
# Define required Ansible's variables to satisfy syntax check
91+
#extra_vars:
92+
# foo: bar
93+
# multiline_string_variable: |
94+
# line1
95+
# line2
96+
# complex_variable: ":{;\t$()"
97+
98+
# Uncomment to enforce action validation with tasks, usually is not
99+
# needed as Ansible syntax check also covers it.
100+
# skip_action_validation: false
101+
102+
# List of additional kind:pattern to be added at the top of the default
103+
# match list, first match determines the file kind.
104+
#kinds:
105+
# - playbook: "**/examples/*.{yml,yaml}"
106+
# - galaxy: "**/folder/galaxy.yml"
107+
# - tasks: "**/tasks/*.yml"
108+
# - vars: "**/vars/*.yml"
109+
# - meta: "**/meta/main.yml"
110+
# - yaml: "**/*.yaml-too"
111+
112+
# List of additional collections to allow in only-builtins rule.
113+
# only_builtins_allow_collections:
114+
# - example_ns.example_collection
115+
116+
# List of additions modules to allow in only-builtins rule.
117+
# only_builtins_allow_modules:
118+
# - example_module
119+
120+
# Allow setting custom prefix for name[prefix] rule
121+
#task_name_prefix: "{stem} | "
122+
# Complexity related settings
123+
124+
# Limit the depth of the nested blocks:
125+
# max_block_depth: 20
126+
127+
# Also recognize these versions of Ansible as supported:
128+
# supported_ansible_also:
129+
# - "2.14"

.github/workflows/pull-request.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
name: Pull request
3+
4+
on: pull_request
5+
6+
jobs:
7+
ansible-lint:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- uses: actions/checkout@v4
11+
- name: Run ansible-lint
12+
uses: ansible/ansible-lint@main

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,22 @@ Example Playbook
5050
roles:
5151
- { role: f500.php_composer, php_composer_install_path: /usr/local/bin/composer, php_composer_wrapper_enabled: no }
5252

53+
Linting
54+
-------
55+
Github actions will check this role with ansible-lint. To run this locally, you will need to follow the following steps:
56+
57+
```bash
58+
brew install ansible-lint
59+
brew install yamllint
60+
ansible-lint
61+
```
62+
63+
to fix the linting errors, run:
64+
65+
```bash
66+
ansible-lint --fix
67+
```
68+
5369
License
5470
-------
5571

defaults/main.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
php_composer_install_path: /usr/local/bin/composer.phar
44

5-
php_composer_version: ~
6-
7-
php_composer_wrapper_enabled: yes
5+
php_composer_version:
6+
php_composer_wrapper_enabled: true
87
php_composer_wrapper_path: /usr/local/bin/composer
98
php_composer_wrapper_ini_directives:
10-
allow_url_fopen: yes
9+
allow_url_fopen: true
1110
disable_functions: ""
1211
memory_limit: -1

meta/main.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@
33
galaxy_info:
44
author: "Jasper N. Brouwer, Ramon de la Fuente"
55
role_name: php_composer
6+
namespace: "f500"
67
description: Install Composer, the dependency manager for PHP
78
company: Future500
89
license: LGPL-3.0
910
min_ansible_version: "1.4"
1011
platforms:
11-
- name: Debian
12-
versions:
13-
- bullseye
14-
- bookworm
12+
- name: Debian
13+
versions:
14+
- bullseye
15+
- bookworm
1516
galaxy_tags:
1617
- web
1718
- system

tasks/main.yml

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,43 @@
11
---
2-
32
- name: Check if Composer is installed
4-
stat:
3+
ansible.builtin.stat:
54
path: "{{ php_composer_install_path }}"
65
register: php_composer_binary
76

87
- name: Install packages needed to install Composer
9-
apt:
8+
ansible.builtin.apt:
109
name: wget
1110
state: present
1211
when: not php_composer_binary.stat.exists
1312

1413
- name: Create the install script
15-
template:
14+
ansible.builtin.template:
1615
src: composer-install.sh.j2
1716
dest: /tmp/composer-install.sh
18-
mode: 0755
17+
mode: "0755"
1918
when: not php_composer_binary.stat.exists
2019

2120
- name: Install Composer
22-
command: ./composer-install.sh
21+
ansible.builtin.command: ./composer-install.sh
2322
args:
2423
chdir: /tmp
2524
when: not php_composer_binary.stat.exists
25+
changed_when: false
2626

2727
- name: Remove the install script
28-
file:
28+
ansible.builtin.file:
2929
path: /tmp/composer-install.sh
3030
state: absent
3131
when: not php_composer_binary.stat.exists
3232

3333
- name: Move Composer to the install path
34-
command: mv /tmp/composer.phar "{{ php_composer_install_path }}"
34+
ansible.builtin.command: mv /tmp/composer.phar "{{ php_composer_install_path }}"
3535
when: not php_composer_binary.stat.exists
36+
changed_when: false
3637

3738
- name: Enable the wrapper
38-
template:
39+
ansible.builtin.template:
3940
src: composer.j2
4041
dest: "{{ php_composer_wrapper_path }}"
41-
mode: 0755
42+
mode: "0755"
4243
when: php_composer_wrapper_enabled | bool

0 commit comments

Comments
 (0)