mito’s blog

IT技術メインの雑記。思い立ったが吉日。

VBAから見たAnsible Playbookとの比較(ssmonline#5 LTの拡大版)

これは Ansible Advent Calendar 2020 (Adventar版) の 18日目の記事であり、
ssmonline #5のLTの拡大版です。

目的

f:id:mst-it:20201218145838j:plain

VBAの知識を活かして、Ansibleの理解速度、知識の定着率を上げたい!
ということで、LT資料に盛り込めなかった内容を書いていきます。

変数の配列

Dim str_xxx(5) As String   '一次元配列


  • Ansible Playbook
    • 行頭に「- (半角SP)」をつけます
vars:
  fruits_list:
    - apple
    - gorilla



ループ処理

  • VBA
    • 特定の条件に当てはまる間、または当てはまらない間、処理を続ける
Do While i <= 5
    i = i + 1
Loop


  • Ansible Playbook
    • このリストの値を変数に入れて実行する、が多いと思う
debug:
  msg: "{{ item }}"     # itemという名前は仕様
loop:
  - rap
  - panda



IF文

  • VBA
    • 頻繁に使用する
If (str_xxx = "ostrich") Then
    MsgBox "OK!"
End If


  • Ansible Playbook
    • 状況が分からないものに対して、Playbookはあまり使わないと思う
思いつかないです



select case文

  • VBA
    • 2、3個の比較ならIf文を使う
str_XXX = "cow"
Select Case str_XXX
Case Is = "cow"
    MsgBox "OK!"
Case Is = "zebra"
    MsgBox "NG!"
Case Else
    MsgBox "NONE!"
End Select


  • Ansible Playbook
    • when の条件に当てはまったら、モジュールを実行する
    • OSの違いによる分岐を実行させるとか。caseは2,3個くらいのイメージ
file:
  path: /etc/xxx.conf
  state: touch
when: XXX == "cow"



ファイルの分け方

  • VBA
    • ThisWorkbook、標準モジュール、クラスモジュールに分ける
    • シートに書くと、シートを消したときに消えてしまうので使いたくない
  • Ansible Playbook
    • フォルダ構成やファイル名が仕様として決まっている
XXX.yml
roles/
  xxxx/
    tasks/
      main.yml
    vars/
      main.yml



備考

Ansible側は細かく書いてないしもっと深く深く追求できそう。Ansible力が足りない!