DevOps-Automation with Python 8
試想如果有在AWS上的不同Region分別建立了不同的工作環境
例如...
在法國巴黎建了一群EC2當作正式環境
在日本東京建了一群EC2當作開發環境
然後要根據不同Region的EC2 Server給予tag標籤標註prod或dev
當然一個簡單操作就是一台台加上去Tag
但是數量一多就很麻煩,這邊即是練習透過簡單Python程式來做
這邊預計是東京2台EC2+上其他Region上建1台EC2模擬演練
Implementation
首先先把前一節課做的EC2狀態確認的main.py改名為ec2-status-checks.py
然後新增add-env-tags.py開始寫!
這邊將透過describe_instances()這個Func.
先取得所有EC2的id塞到list物件
然後一次性地新增所有EC2的Tag,也就是分為下面兩步驟:
- Collect all instance ids into a list
- Add Tags for all instanceIds at once
這樣可以避免一台EC2就發動請求異動一次導致的效率上的問題
如果哪天遇到100台EC2還要等程式一台台新增Tag就會太慢
確認Func.的回傳內容要先想辦法拿到id清單
初步建構程式如下:
再來就是要找到create_tags()這個func.
上面這部分講師用舊的boto3寫法就不一樣,以下我只寫我的版本
上面的create_tags()這個Func.的回傳範例可以直接複製來用:
這邊順便改變數尾叫tokyo
隨便手動在東京區建兩個EC2:
嘗試執行我們的Python程式:
刷新AWS Web看到:
另一台也:
這邊我個人很好奇如果重複執行會怎麼樣,所以直接跑看看:
所以如果有其他Region的EC2要增加dev的tag可以簡單複製:
如果有非常多Region或是處理的不只有Tag,還可以把上面的程式寫成Func.