質問編集履歴

11

説明文の修正

2023/08/17 05:46

投稿

khaii21
khaii21

スコア67

test CHANGED
File without changes
test CHANGED
@@ -24,6 +24,9 @@
24
24
 
25
25
  msg: "{{ hoge_cmd.results | ansible.builtin.type_debug }}"
26
26
  "msg": "list"
27
+
28
+ msg "{{ hoge_cmd.results.stdout_lines | type_debug }}"
29
+ "msg": "AnsibleUndefined”
27
30
  ```
28
31
 
29
32
  ```hoge_cmd.results抜粋"

10

説明文の修正

2023/08/17 05:44

投稿

khaii21
khaii21

スコア67

test CHANGED
File without changes
test CHANGED
@@ -101,6 +101,15 @@
101
101
  ```
102
102
  ```
103
103
  エラー内容
104
-
105
104
  "template error while templating string: expected token ':', got '
106
105
  ```
106
+
107
+ from_jsonフィルターを試してみたのですが、エラーになりました。
108
+ ```
109
+ msg: "{{ (hoge_cmd.results | ansible.builtin.from_json).stdout_lines }}"
110
+ ```
111
+
112
+ ```
113
+ エラー内容
114
+ {"msg": "Unexpected templating type error occurred on ({{ (hoge_cmd.results | ansible.builtin.from_json).stdout_lines }}): the JSON object must be str, bytes or bytearray, not list. the JSON object must be str, bytes or bytearray, not list"}
115
+ ```

9

説明文の修正

2023/08/16 07:46

投稿

khaii21
khaii21

スコア67

test CHANGED
File without changes
test CHANGED
@@ -93,10 +93,14 @@
93
93
  with_sequence: start=0 end=1
94
94
  ```
95
95
 
96
- 標準出力にあたるstdout_linesを下記のようにした場合、Syntax errorとなりました。
96
+ 標準出力にあたるstdout_linesを下記のようにした場合、template error となりました。
97
97
  ```
98
98
  ansible.builtin.debug:
99
99
  msg: "{{ hoge_cmd.results[{{ item }}]['stdout_lines'] }}"
100
100
  with_sequence: start=0 end=1
101
101
  ```
102
+ ```
103
+ エラー内容
102
104
 
105
+ "template error while templating string: expected token ':', got '
106
+ ```

8

説明文の修正

2023/08/16 04:39

投稿

khaii21
khaii21

スコア67

test CHANGED
File without changes
test CHANGED
@@ -6,9 +6,9 @@
6
6
  11行目のselectのチェックを要素数だけloopして実行し、結果を出力したいのですが良いやり方が思いつきません。
7
7
  リスト型の変数に対して要素数が分かれば実現可能だと考えているのですが、要素数の確認の仕方が分かりません。
8
8
 
9
- 下記を利用すれば実現可能だと考えているすが、具体的なやり方が分かりません。
9
+ 下記を利用すれば実現可能だと考えているすが、変数hoge_cmd.resultsの要素数の取得の仕方が分かりません。
10
10
  ```
11
- when: ( hoge_cmd.results[様子数をロープ]['stdout_lines'] ) | select("regex", "fatal error") | list | length >= 1
11
+ when: ( hoge_cmd.results[ {{ item }}]['stdout_lines'] ) | select("regex", "fatal error") | list | length >= 1
12
12
  with_sequence: start=0 end=要素数
13
13
  ```
14
14
 

7

説明文の修正

2023/08/16 04:37

投稿

khaii21
khaii21

スコア67

test CHANGED
File without changes
test CHANGED
@@ -86,5 +86,17 @@
86
86
  ```
87
87
 
88
88
  ### 試したこと
89
+ 今回のケースでは予め要素数が2つだとわかっていますので下記でselectによるチェックは出来ましたが、
90
+ endにあたる要素数の取得の仕方が分かりません。
91
+ ```
92
+ when: ( hoge_cmd.results[{{ item }}]['stdout_lines'] ) | select("regex", "fatal error") | list | length >= 1
93
+ with_sequence: start=0 end=1
94
+ ```
89
95
 
96
+ 標準出力にあたるstdout_linesを下記のようにした場合、Syntax errorとなりました。
97
+ ```
98
+ ansible.builtin.debug:
99
+ msg: "{{ hoge_cmd.results[{{ item }}]['stdout_lines'] }}"
100
+ with_sequence: start=0 end=1
101
+ ```
90
102
 

6

説明文の修正

2023/08/16 04:00

投稿

khaii21
khaii21

スコア67

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,14 @@
4
4
  11行目にてチェックを行いfatal errerとなった場合の処理をしたいです。
5
5
  該当の変数(hoge_cmd.results)の要素数は今回のケースでは2つですが、1つの場合もあれば10のケースも見込めます。
6
6
  11行目のselectのチェックを要素数だけloopして実行し、結果を出力したいのですが良いやり方が思いつきません。
7
+ リスト型の変数に対して要素数が分かれば実現可能だと考えているのですが、要素数の確認の仕方が分かりません。
8
+
9
+ 下記を利用すれば実現可能だと考えているすが、具体的なやり方が分かりません。
10
+ ```
11
+ when: ( hoge_cmd.results[様子数をロープ]['stdout_lines'] ) | select("regex", "fatal error") | list | length >= 1
12
+ with_sequence: start=0 end=要素数
13
+ ```
14
+
7
15
  どなたか良い方法をご存知の方がいらっしゃいましたら、ご教授頂けないでしょうか。
8
16
  宜しくお願い致します。
9
17
 
@@ -68,7 +76,7 @@
68
76
  - name: "hogeコマンドの実行結果"
69
77
  ansible.builtin.debug:
70
78
  msg: "1台もしくは複数台のホストでコマンドが失敗した可能性があります"
71
- when: ( server_group ) | select("regex", "fatal error") | list | length >= 1
79
+ when: ( hoge_cmd.results[要素数だけループ]['stdout_lines'] ) | select("regex", "fatal error") | list | length >= 1
72
80
  - name: "hogeコマンドの実行結果"
73
81
  ansible.builtin.debug:
74
82
  msg: "{{ hoge_cmd.results }}"
@@ -78,8 +86,5 @@
78
86
  ```
79
87
 
80
88
  ### 試したこと
81
- 下記を利用すれば実現可能だと考えているすが、具体的なやり方が分かりません。
82
- ```
83
- with_sequence: start=0 end=要素数 format=%d
84
- ```
85
89
 
90
+

5

説明文の修正

2023/08/16 03:53

投稿

khaii21
khaii21

スコア67

test CHANGED
File without changes
test CHANGED
@@ -7,7 +7,6 @@
7
7
  どなたか良い方法をご存知の方がいらっしゃいましたら、ご教授頂けないでしょうか。
8
8
  宜しくお願い致します。
9
9
 
10
- ```
11
10
  registerにて実行結果を変数(hoge_cmd)に代入して、selectを使って文字列をカウントします。
12
11
  変数hoge_cmdはdict型ですが、標準出力結果が含まれているその配下のhoge_cmd.resultsはlist型になります。
13
12
 

4

説明文の修正

2023/08/16 03:48

投稿

khaii21
khaii21

スコア67

test CHANGED
File without changes
test CHANGED
@@ -8,10 +8,6 @@
8
8
  宜しくお願い致します。
9
9
 
10
10
  ```
11
- TASK [停止コマンドの実行結果] *************************************************************************************************************************************************************
12
- skipping: [localhost]
13
- ```
14
-
15
11
  registerにて実行結果を変数(hoge_cmd)に代入して、selectを使って文字列をカウントします。
16
12
  変数hoge_cmdはdict型ですが、標準出力結果が含まれているその配下のhoge_cmd.resultsはlist型になります。
17
13
 
@@ -83,7 +79,8 @@
83
79
  ```
84
80
 
85
81
  ### 試したこと
82
+ 下記を利用すれば実現可能だと考えているすが、具体的なやり方が分かりません。
83
+ ```
84
+ with_sequence: start=0 end=要素数 format=%d
85
+ ```
86
86
 
87
-
88
-
89
-

3

説明文の修正

2023/08/16 03:36

投稿

khaii21
khaii21

スコア67

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 実現したいこと
2
2
 
3
3
  commandモジュールにて実行した結果から、任意の文字列(fatal error)を検知したいです。
4
- 11行目にてチェックを行いfatal errerとなった場合の処理をしたいです。
4
+ 11行目にてチェックを行いfatal errerとなった場合の処理をしたいです。
5
5
  該当の変数(hoge_cmd.results)の要素数は今回のケースでは2つですが、1つの場合もあれば10のケースも見込めます。
6
6
  11行目のselectのチェックを要素数だけloopして実行し、結果を出力したいのですが良いやり方が思いつきません。
7
7
  どなたか良い方法をご存知の方がいらっしゃいましたら、ご教授頂けないでしょうか。

2

説明文の修正

2023/08/16 03:35

投稿

khaii21
khaii21

スコア67

test CHANGED
@@ -1 +1 @@
1
- Ansible リスト型に対するselectの使方について
1
+ Ansible リスト型の変数の要素数だけループしてselectのチェックをした
test CHANGED
@@ -1,8 +1,11 @@
1
1
  ### 実現したいこと
2
2
 
3
3
  commandモジュールにて実行した結果から、任意の文字列(fatal error)を検知したいです。
4
- 11行目にてチェックを行いfatal errerとなった場合の処理をしたいのですが、
4
+ 11行目にてチェックを行いfatal errerとなった場合の処理をしたいのです
5
+ 該当の変数(hoge_cmd.results)の要素数は今回のケースでは2つですが、1つの場合もあれば10のケースも見込めます。
6
+ 11行目のselectのチェックを要素数だけloopして実行し、結果を出力したいのですが良いやり方が思いつきません。
5
- 発生してるにも関わずskippingとなしまいます
7
+ どなたか良方法をご存知の方がいらっしゃいしたら、ご教授頂けなでしょうか
8
+ 宜しくお願い致します。
6
9
 
7
10
  ```
8
11
  TASK [停止コマンドの実行結果] *************************************************************************************************************************************************************
@@ -19,11 +22,6 @@
19
22
  msg: "{{ hoge_cmd.results | ansible.builtin.type_debug }}"
20
23
  "msg": "list"
21
24
  ```
22
-
23
- hoge_cmd.resultsの内容を確認すると、想定通りにアクセスした2台のホストの情報が出力されますが
24
- 標準出力(hoge_cmd.results[0]['stdout_lines’])だけを取得すると最初の1台分しか表示されません。
25
- 標準出力stdout_linesにて該当する2台の結果を取得する方法がありましたらご教授頂けないでしょうか。
26
- 宜しくお願い致します。
27
25
 
28
26
  ```hoge_cmd.results抜粋"
29
27
  ok: [localhost] => {
@@ -46,28 +44,21 @@
46
44
  "fatal error"
47
45
  ```
48
46
  ```
49
- 期待する結果
50
-
51
47
  msg: "{{ hoge_cmd.results[0]['stdout_lines'] }}"
52
48
  ok: [localhost] => {
53
49
  "msg": [
54
50
  "hoge001.co.jp"
55
51
  "OK"
56
52
  ]
53
+
54
+ msg: "{{ hoge_cmd.results[1]['stdout_lines'] }}"
57
55
  "msg": [
58
56
  "hoge002.co.jp"
59
57
  "fatal error"
60
58
  ]
61
59
  }
62
60
  ```
63
- ```
61
+
64
- 実際の結果
65
- ok: [localhost] => {
66
- "msg": [
67
- "hoge001.co.jp"
68
- "OK"
69
- ]
70
- ```
71
62
 
72
63
  ### 該当のソースコード
73
64
 
@@ -93,7 +84,6 @@
93
84
 
94
85
  ### 試したこと
95
86
 
96
- msg: "{{ hoge_cmd.results[0]['stdout_lines'] }}"の代わりに
97
- msg: "{{ hoge_cmd.results.stdout_lines }}"とすると"VARIABLE IS NOT DEFINED!"となり値を取得出来ませんでした。
98
87
 
99
88
 
89
+

1

説明文の修正

2023/08/16 02:56

投稿

khaii21
khaii21

スコア67

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 実現したいこと
2
2
 
3
- commandモジュールにて実行した結果から、任意の文字列(fatal errer)を検知したいです。
3
+ commandモジュールにて実行した結果から、任意の文字列(fatal error)を検知したいです。
4
4
  11行目にてチェックを行いfatal errerとなった場合の処理をしたいのですが、
5
5
  発生しているにも関わらずskippingとなってしまいます。
6
6
 
@@ -82,7 +82,7 @@
82
82
  - name: "hogeコマンドの実行結果"
83
83
  ansible.builtin.debug:
84
84
  msg: "1台もしくは複数台のホストでコマンドが失敗した可能性があります"
85
- when: ( server_group ) | select("regex", "fatal errer") | list | length >= 1
85
+ when: ( server_group ) | select("regex", "fatal error") | list | length >= 1
86
86
  - name: "hogeコマンドの実行結果"
87
87
  ansible.builtin.debug:
88
88
  msg: "{{ hoge_cmd.results }}"