teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

コード修正

2021/09/30 09:25

投稿

comefigo
comefigo

スコア1051

answer CHANGED
@@ -10,6 +10,26 @@
10
10
  `hostvars`をデバックしてみて頂ければピンとくるかと思います。
11
11
 
12
12
  ```yaml
13
+ - name: debugテスト
14
+ hosts: all
15
+ user: Administrator
16
+ gather_facts: no
17
+ environment:
18
+ no_proxy: 127.0.0.1,localhost
19
+ tasks:
20
+ - name: Get disk facts
21
+ community.windows.win_disk_facts:
22
+
23
+ - set_fact:
24
+ disksize_gib_human: '{{ disk.size|filesizeformat(true) }}'
25
+ disksize_gib: '{{ (disk.size/1024|pow(3))|round|int }} GiB'
26
+ disksize_gb_human: '{{ disk.size|filesizeformat }}'
27
+ disksize_gb: '{{ (disk.size/1000|pow(3))|round|int }} GB'
28
+
29
+ ```
30
+
31
+
32
+ ```yaml
13
33
  # item.keyはホスト名
14
34
  # item.valueはそのホストで使用可能な変数
15
35
  #
@@ -24,6 +44,10 @@
24
44
  - debug:
25
45
  msg: "{{ item.key }}"
26
46
  with_dict: "{{ hostvars }}"
47
+
48
+ # ANSIBLE-2019で定義されたもしくは読み込まれた変数を表示します。
49
+ - debug:
50
+ msg: "{{ hostvars['ANSIBLE-2019'] }}"
27
51
  ```
28
52
 
29
53
  なお、他のホスト変数を更新はできない。

2

デバックコードを追記

2021/09/30 09:25

投稿

comefigo
comefigo

スコア1051

answer CHANGED
@@ -10,7 +10,20 @@
10
10
  `hostvars`をデバックしてみて頂ければピンとくるかと思います。
11
11
 
12
12
  ```yaml
13
+ # item.keyはホスト名
14
+ # item.valueはそのホストで使用可能な変数
15
+ #
16
+ # hostvarsは以下のような構造になっています
17
+ #
18
+ # -------------------------------------
19
+ # hostvars[host1][disksize_gib_human]
20
+ # [disksize_gib]
21
+ # hostvars[host2][disksize_gib_human]
22
+ # [[disksize_gib]]
23
+ # --------------------------------------
24
+ - debug:
25
+ msg: "{{ item.key }}"
13
- - debug: msg="{{ hostvars }}"
26
+ with_dict: "{{ hostvars }}"
14
27
  ```
15
28
 
16
29
  なお、他のホスト変数を更新はできない。

1

文書校正

2021/09/30 06:12

投稿

comefigo
comefigo

スコア1051

answer CHANGED
@@ -1,8 +1,8 @@
1
- playのdegugテストで各ホストで`win_disk_facts`した結果を各変数に格納しています。
1
+ playのdegugテストで各ホストで`win_disk_facts`した結果を各変数に格納しています。
2
2
  それらの変数は競合しないように**ホストごと**に管理されています。
3
3
 
4
4
  例えば、host1とhost2がある場合は、host1のdisksize_gib_humanとhost2のdisksize_gib_humanがそれぞれ管理されています。
5
- つまり、host1でdisksize_gib_humanを呼び出した時や値を格納するときはhost1のdisksize_gib_humanが使われます。
5
+ つまり、host1でdisksize_gib_humanを呼び出した時や値を格納するときはhost1のdisksize_gib_humanが使われます。host2のdisksize_gib_humanに影響はない。
6
6
 
7
7
  では、playの「Ansibleを基にServerSpecの設定を作成」のホストはlocalhostなので、host1とhost2の変数はそのまま呼び出せないようになっています。
8
8