Ansible hoe handlers includen?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
Ik ben aan het beginnen met ansible en ben nu aan het proberen om handlers in mijn setup te krijgen. Mijn basis setup is deze:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
.
├── '
├── group_vars
│   └── hostname1.yml
├── hosts
├── production
├── roles
│   ├── charlie
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   │   └── motion.conf
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── vars
│   │       └── main.yml
│   ├── common
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   │   ├── autofs
│   │   │   └── resolv.conf
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── vars
│   │       └── main.yml
│   ├── dokuwiki
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── vars
│   │       └── main.yml
│   ├── grafana
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── vars
│   │       └── main.yml
│   ├── home-assistant
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── vars
│   │       └── main.yml
│   ├── optiplex
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── vars
│   │       └── main.yml
│   ├── raspberrypi
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── vars
│   │       └── main.yml
│   ├── stats
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   │   ├── cron.daily
│   │   │   ├── grafana
│   │   │   ├── influxdb
│   │   │   ├── mosquitto
│   │   │   ├── pivpn
│   │   │   └── telegraf
│   │   ├── handlers
│   │   │   └── mosquitto.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   ├── grafana.yml
│   │   │   ├── influxdb.yml
│   │   │   ├── main.yml
│   │   │   ├── mosquitto.yml
│   │   │   ├── pivpn.yml
│   │   │   ├── telegraf.yml
│   │   │   └── udev.yml
│   │   ├── telegraf
│   │   └── vars
│   │       └── main.yml
│   ├── template
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── vars
│   │       └── main.yml
│   └── wireguard
│       ├── defaults
│       │   └── main.yml
│       ├── files
│       │   └── wireguard
│       ├── handlers
│       │   └── main.yml
│       ├── meta
│       │   └── main.yml
│       ├── tasks
│       │   └── main.yml
│       └── vars
│           └── main.yml
├── site.yml
├── staging
└── webservers.yml


site.yml:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- hosts: all
  name: apply common configuration to all nodes
  remote_user: blah
  become: true
  roles:
    - common

- hosts: stats
  roles:
    - { role: stats }
  remote_user: blah

- hosts: optiplex
  roles:
    - { role: optiplex }
  remote_user: blah


- hosts: raspberrypi
  roles:
    - { role: raspberrypi }
  remote_user: blah


hosts:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
charlie
stats
optiplex


[raspberrypi]
charlie
stats

[optiplex]
optiplex

[debian]
tapews

[stats]
stats


Ik wil dan mijn host stats checken:
code:
1
ansible-playbook -i ./hosts ./site.yml --limit stats --check


Als ik een grep -Rli tasks\: doe: geen matches. (dat kan misschien al een indicatie zijn dat ik iets mis doe? De reden waarom ik dit erbij zet, is dat ik vaak online vind dat je handlers ter hoogte van tasks moet includen. Maar ik vind nergens tasks. Is dat al een indicatie dat ik iets mis doe?

Ik heb ze al in site.yml gezet ter hoogte van hosts. Ik heb ze al onder ./roles/[rolename]/tasts/main.yml gezet maar daar krijg ik die er ook met geen stokken bij. Met - ervoor, zonder, verschillende dieptes. Niets werkt.

Ik krijg telkens:
code:
1
2
3
4
5
ERROR! We were unable to read either as JSON nor YAML, these are the errors we got from each:
JSON: Expecting value: line 1 column 1 (char 0)

Syntax Error while loading YAML.
  did not find expected '-' indicator

of in die aard.

Ik mis dus iets maar ik weet niet wat. :? :X


EDIT: voor alle duidelijkheid, ik probeer handlers te includen in een aparte file: [rolename]/handlers/main.yml of zo.

[ Voor 78% gewijzigd door bucovaina89 op 10-05-2022 13:00 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Shivs
  • Registratie: Januari 2010
  • Niet online
De foutmelding duidt er op dat je niet de juiste setup hebt of het verkeerd aanroept. Op welke manier start je het main playbook en kan je niet ongeveer jouw structuur maar exact jouw structuur vermelden? ;-)

Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
@Shivs : sorry inderdaad, ik heb de opening post aangepast om de directorystructuur weer te geven. Dit is idd de "repo" of "setup" :)

Acties:
  • 0 Henk 'm!

  • Shivs
  • Registratie: Januari 2010
  • Niet online
Ik denk dat de volgende stap is de inhoud van site.yml te tonen. Het probleem lijkt namelijk te zijn dat je een bepaalde role include die niet de jusite files heeft voor hoe je deze include.

Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
ok die heb ik er ook bij gezet inclusief de hosts file

Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
ik zou verwachten dat ik ergens in ./roles/stats/tasks/main.yml een include zou moeten doen zodat ./roles/stats/handlers/main.yml ook mee wordt ingelezen, maar dat wil niet lukken.

Acties:
  • 0 Henk 'm!

  • canonball
  • Registratie: Juli 2004
  • Laatst online: 22:21
normaal start een playbook met drie streepjes, dus site.yml zou dan beginnen met
code:
1
---

Kun je eens kijken of je daarmee de foutmelding kwijt bent.

Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
Idd, dat was niet helemaal juist, maar het probleem blijft:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ERROR! We were unable to read either as JSON nor YAML, these are the errors we got from each:
JSON: Expecting value: line 1 column 1 (char 0)

Syntax Error while loading YAML.
  mapping values are not allowed in this context

The error appears to be in './roles/stats/handlers/mosquitto.yml': line 2, column 28, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- name: restart mosquitto
    ansible.builtin.service:
                           ^ here



roles/stats/tasks/mosquitto.yml (deze wordt geinclude in roles/stats/handlers/main.yml)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
---
- name: Copy /etc/mosquitto/
  become: true
  copy:
        backup: yes
        src: mosquitto/mosquitto.conf
        dest: /etc/mosquitto/mosquitto.conf
        owner: root
        group: grafana
        mode: 0644
  notify: restart mosquitto

- name: Include handlers
  include: roles/stats/handlers/mosquitto.yml

- name: Ensure mosquitto is enabled
  ansible.builtin.service:
    name: mosquitto.service
    state: restarted


roles/stats/handlers/mosquitto.yml
code:
1
2
3
4
5
- name: restart mosquitto
    ansible.builtin.service:
      name: mosquitto
      state: restarted
    listen: "restart mosquitto"


Ik had half ergens verwacht dat als er een file in roles/[role]/handlers/*.yml staat, dat die automatisch geinclude werd.

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Syntax Error while loading YAML.
mapping values are not allowed in this context
Deze error krijg je nagenoeg altijd als je yaml file niet goed geformat is. Let op je indentation vooral.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • SkylerNL
  • Registratie: Juni 2013
  • Laatst online: 15-09 14:00
bucovaina89 schreef op dinsdag 10 mei 2022 @ 14:45:
Idd, dat was niet helemaal juist, maar het probleem blijft:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ERROR! We were unable to read either as JSON nor YAML, these are the errors we got from each:
JSON: Expecting value: line 1 column 1 (char 0)

Syntax Error while loading YAML.
  mapping values are not allowed in this context

The error appears to be in './roles/stats/handlers/mosquitto.yml': line 2, column 28, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- name: restart mosquitto
    ansible.builtin.service:
                           ^ here



roles/stats/tasks/mosquitto.yml (deze wordt geinclude in roles/stats/handlers/main.yml)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
---
- name: Copy /etc/mosquitto/
  become: true
  copy:
        backup: yes
        src: mosquitto/mosquitto.conf
        dest: /etc/mosquitto/mosquitto.conf
        owner: root
        group: grafana
        mode: 0644
  notify: restart mosquitto

- name: Include handlers
  include: roles/stats/handlers/mosquitto.yml

- name: Ensure mosquitto is enabled
  ansible.builtin.service:
    name: mosquitto.service
    state: restarted


roles/stats/handlers/mosquitto.yml
code:
1
2
3
4
5
- name: restart mosquitto
    ansible.builtin.service:
      name: mosquitto
      state: restarted
    listen: "restart mosquitto"


Ik had half ergens verwacht dat als er een file in roles/[role]/handlers/*.yml staat, dat die automatisch geinclude werd.
Je indentation is niet goed. je bent te vroeg ingesprongen na de "- name:" regel.

Dus moet zo zijn:

code:
1
2
3
4
5
- name: restart mosquitto
  ansible.builtin.service:
    name: mosquitto
    state: restarted
  listen: "restart mosquitto"

Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
Ondertussen lijkt het te werken, maar ik moet hem (edit: de handler definitie) echt in ./site.yml zetten, is dat logisch? Waarom bestaat dan de "handlers" directory? Zou daar niet een .yml file moeten kunnen staan met handlers in?

code:
1
2
3
4
5
6
7
- hosts: stats
  roles:
    - { role: stats }
  remote_user: blah
  handlers:
      - name: restart mosquitto
        service: name=mosquitto state=restarted

[ Voor 3% gewijzigd door bucovaina89 op 10-05-2022 19:56 ]


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

ja, als je daar 'main.yml' in zet wordt die geladen.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
Dat heb ik geprobeerd maar dan krijg ik weer errors. Copy paste van wat in site.yml stond.

code:
1
ERROR! The handlers/main.yml file for role 'stats' must contain a list of tasks

code:
1
2
3
4
cat roles/stats/handlers/main.yml
handlers:
  - name: restart mosquitto
    service: name=mosquitto state=restarted


En als ik dit er van maak:
code:
1
2
3
4
cat roles/stats/handlers/main.yml
- handlers:
    - name: restart mosquitto
      service: name=mosquitto state=restarted

Dan krijg ik dit als error
code:
1
ERROR! unexpected parameter type in action: <class 'ansible.parsing.yaml.objects.AnsibleSequence'>

[ Voor 32% gewijzigd door bucovaina89 op 10-05-2022 20:39 ]


Acties:
  • +1 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

je moet daar alleen een zooi handlers in hebben, die 'handlers:' is niet nodig.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
Yes inderdaad, nu werkt het _/-\o_
Pagina: 1