ansible自动构建环境第二部分(Azure沉思沉思会2018/06/09(星期六))
继上次的研讨会之后,本次我们将再次使用Ansible来创建Azure环境。
上一篇文章请点击这里。
我写作业的内容变得相当长,所以如果你只是快速浏览,我觉得通过阅读开头部分、社交聚会和参考链接,基本上能理解内容。
木木会和这次的目标设定
Azure 蓝色翛然聚会
关于Azure沉思会,请点击以下链接。
https://azure-moku2.connpass.com/event/88900/
简单来说,这是一个工程师们聚集在一起,每个人都设定目标并一起在Azure技术上工作的地方。不过,并不需要那么正式和拘束。
主办者kingkino先生是一位荣获Microsoft Azure的MVP奖项的人,并且目前以产品经理的身份发挥重要作用。
时间表和本次目标设定
■ 时间表(自习会)
■ 本次的目标
-
- 使用 Azure Cloud Shell 上的 Ansible 部署虚拟机
-
- 从 Windows Subsystems for Linux 上的 Ansible 部署虚拟机到 Azure
-
- 通过 Ansible 连接到已创建的虚拟机
-
- 部署带有连续编号的虚拟机主机名
- 在部署过程中,对虚拟机执行某种处理
任务和结果
环境
-
- Windows 10 Pro 64bit (1803)
-
- Windows Subsystem for Linux(Ubunt 16.04)
-
- Azure Cloud Shell (Bash)
- サクラエディタ
我在 WSL(Windows Subsystem for Linux)的Ubuntu上安装了16.04LTS版本,但是我也知道有18.04LTS版本。由于两者可以共存,我打算稍后安装18.04LTS版本并进行尝试。
作业摘要
-
- 安装编辑器
-
- 在Azure Cloud Shell上使用Ansible
-
- 将虚拟机部署到Azure Cloud而不是WSL
-
- 对已部署的虚拟机执行Azure Cloud中的Ansible
- 按连续编号部署多个虚拟机
任务内容
1. 编辑器的安装 qì de ān
今天安装了Sakura编辑器,以备今天的工作使用。
-
- 从以下链接下载和安装v2版本
-
- https://sakura-editor.github.io/
为了能够使用正则表达式,需要替换bregonig.dll文件(也许最初就可以使用)
http://k-takata.o.oo7.jp/mysoft/bregonig.html
下载bron412.zip并将以下文件放置在以下文件夹中
bregonig.dll
-> C:\Users(User)\AppData\Roaming\sakura
在Azure云shell上使用Ansible
最近,在 Azure 云 Shell (bash) 中随意运行 ansible 命令时,返回了一条用法信息。由于对其如何使用感到好奇,我决定尝试使用一下。
由于Azure Cloud Shell上的虚拟机构建功能,我们可以参考这篇文章提供的充分信息进行操作。
-
- Ansible を使用して、Azure の完全な Linux VM を作成する | Microsoft Docs
- https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/ansible-create-complete-vm
2.1. 创建资源组
首先,在创建虚拟机之前,我们需要先创建资源组,所以我们可以通过Cloud Shell来创建。
-
- 打开 Azure 门户并登录。
-
- https://portal.azure.com
从右上角的图标中选择 [>_]。
在启动的 Shell 中选择 Bash。
输入以下内容。
# Azure Cloud
> az group create --name myResourceGroup --location eastus
如果您没有创建资源组,您将在后续操作中得到以下的提示。
失败:[localhost] => {“changed”: false, “msg”: “获取资源组myResourceGroup时出错 – 找不到资源组’myResourceGroup’。”}
2.2. 创建 Ansible Playbook
- 使用vim(emacs)在Cloud Shell中创建以下文件和文件夹。
# 念のためホームへ移動
> cd
# 作業用フォルダの作成と移動
> mkdir work
> cd work
# ssh公開鍵の確認(出力結果を後で使う)
> cat ~/.ssh/id_rsa.pub
# プレイブックを作成
> vi playbook.yml
请将以下内容输入并保存。
- name: Create Azure VM
hosts: localhost
connection: local
tasks:
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: myResourceGroup
name: myVnet
address_prefixes: "10.0.0.0/16"
- name: Add subnet
azure_rm_subnet:
resource_group: myResourceGroup
name: mySubnet
address_prefix: "10.0.1.0/24"
virtual_network: myVnet
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: myResourceGroup
allocation_method: Static
name: myPublicIP
- name: Create Network Security Group that allows SSH
azure_rm_securitygroup:
resource_group: myResourceGroup
name: myNetworkSecurityGroup
rules:
- name: SSH
protocol: Tcp
destination_port_range: 22
access: Allow
priority: 1001
direction: Inbound
- name: Create virtual network inteface card
azure_rm_networkinterface:
resource_group: myResourceGroup
name: myNIC
virtual_network: myVnet
subnet: mySubnet
public_ip_name: myPublicIP
security_group: myNetworkSecurityGroup
- name: Create VM
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: myVM
vm_size: Standard_DS1_v2
admin_username: azureuser
ssh_password_enabled: false
ssh_public_keys:
- path: /home/azureuser/.ssh/authorized_keys
key_data: "*** ~/.ssh/id_rsa.pub の内容を入力 ***"
network_interfaces: myNIC
image:
offer: CentOS
publisher: OpenLogic
sku: '7.3'
version: latest
需要将 “key_data” 部分根据自己的需要进行修改。
将刚刚输出的内容复制粘贴即可。
如果没有正确地更改为自己用的,将会出现以下的消息并被责备。
致命的:[本地主机]:失败! => {“changed”: false, “msg”: “创建或更新虚拟机myVM出现错误 – Azure错误:InvalidParameter\n消息:参数linuxConfiguration.ssh.publicKeys.keyData的值无效。\n目标:linuxConfiguration.ssh.publicKeys.keyData”}
2.3. 执行 Ansible Playbook
- 从以下命令中执行。
# Ansible playbook の実行
> ansible-playbook playbook.yml
如果一切如无事发生,那么我的虚拟机应该已经建立完成了。
3. 从WSL部署虚拟机到Azure云上
要使用WSL从Ansible部署虚拟机到Azure,必须进行以下准备。
-
- WSL に Ubuntu をインストール(今回は Ubuntu 16.04 を利用)
-
- Python 仮想環境を構築(pip を利用するため)
-
- Azure CLI, Ansible 関連パッケージを導入
- プレイブックの実行
3.1. 在 WSL 上安装 Ubuntu(本次使用的是 Ubuntu 16.04)
首先,在WSL上安装Ubuntu。
-
- 请连接到Windows商店并安装Ubuntu。
-
- https://www.microsoft.com/ja-jp/p/ubuntu/9nblggh4msv6
启动后,请设置用户名和密码。
由于可能存在旧软件包,请随意进行升级。
# apt よりパッケージ情報を更新
> sudo apt update
# apt よりパッケージの更新(dist-upgrade でもいいかも)
> sudo apt upgrade
3.2. 创建Python虚拟环境(以便使用pip)
- 请输入以下命令。
# Python 仮想環境を作成(ansibleフォルダを作成)
> python -m venv ansible
# Python 仮想環境に入る
> cd ansible
> source bin/activate
# 仮想環境から離れる場合は "> deactivate" コマンドを実行する。
# pip のバージョンが古い場合があるので更新する
> pip install -U pip
3.3. 安装 Azure CLI 和 Ansible 相关软件包。
-
- 参考以下链接,安装 Azure CLI。
-
- 使用 apt 在 Linux 上安装 Azure CLI 2.0 | Microsoft 文档
-
- ※ 在此先完成 az login 认证。
- 安装与 Ansible 相关的软件包。
# Ansible のインストール
> pip install ansible==2.5.3
# 関連するパッケージの導入
> pip install packaging msrestazure ansible[azure]
3.4. 执行剧本
由于存在相同名称的资源,因此在开始之前,请先连接到 Azure 门户并进行删除。
此外,我们将重用之前使用的 Playbook。
-
- 连接到Azure门户,删除myResourceGroup。
-
- https://portal.azure.com
使用vim等编辑器将刚才使用的Playbook保存到本地。
执行以下命令。
> ansible-playbook playbook.yml
在WSL上,我们可以使用Ansible将虚拟机部署到Azure上。
对已部署的虚拟机执行 Azure Cloud 的 Ansible
由于似乎存在一个名为azure_rm.py的脚本,可以用它来获取Azure的库存信息,所以我将尝试使用它。
-
- Ansible を使用した Azure の動的インベントリの管理 | Microsoft Docs
- https://docs.microsoft.com/ja-jp/azure/ansible/ansible-manage-azure-dynamic-inventories
-
- 登录Azure门户。
-
- https://portal.azure.com
从右上角的图标中选择 [>_]。
选择Bash作为启动的Shell。
然后输入以下内容。
# azure_rm.py のダウンロード
> wget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/azure_rm.py
# 実行権限の付与
> chmod +x azure_rm.py
# Ansible の実行
> ansible -i azure_rm.py myVM -m ping -e ansible_ssh_user=azureuser
# 昨日は上手くいったのに、今日は上手くいかない。
# 何か足りない設定が分かったら追記します。
这应该能做到。
5. 通过连续编号部署多个虚拟机
只需在这次使用的Playbook中嵌入数组和循环,就可以创建它。
我添加了一个变量ids。
请按照以下方式修改Playbook,并运行 ansible-playbook playbook.yml。
- name: Create Azure VM
hosts: localhost
connection: local
vars:
ids: [1,2]
tasks:
- name: Create ResourceManager
azure_rm_resourcegroup:
name: linuxResourceGroup
location: japaneast
- name: Create virtual network
azure_rm_virtualnetwork:
resource_group: linuxResourceGroup
name: linuxVnet
address_prefixes: "10.0.1.0/24"
- name: Add subnet
azure_rm_subnet:
resource_group: linuxResourceGroup
name: linuxSubnet
address_prefix: "10.0.1.0/24"
virtual_network: linuxVnet
- name: Create public IP address
azure_rm_publicipaddress:
resource_group: linuxResourceGroup
allocation_method: Static
name: "linuxPublicIP{{ item }}"
with_items: "{{ ids }}"
- name: Create Network Security Group that allows SSH
azure_rm_securitygroup:
resource_group: linuxResourceGroup
name: linuxNetworkSecurityGroup
rules:
- name: SSH
protocol: Tcp
destination_port_range: 22
access: Allow
priority: 1001
direction: Inbound
- name: Create virtual network inteface card
azure_rm_networkinterface:
resource_group: linuxResourceGroup
name: "linuxNIC{{ item }}"
virtual_network: linuxVnet
subnet: linuxSubnet
public_ip_name: "linuxPublicIP{{ item }}"
security_group: linuxNetworkSecurityGroup
with_items: "{{ ids }}"
- name: Create VM
azure_rm_virtualmachine:
resource_group: linuxResourceGroup
name: "linuxVM{{ item }}"
vm_size: Standard_DS1_v2
admin_username: azureuser
ssh_password_enabled: false
ssh_public_keys:
- path: /home/azureuser/.ssh/authorized_keys
key_data: "*** ~/.ssh/id_rsa.pub の内容を入力 ***"
network_interfaces: "linuxNIC{{ item }}"
image:
offer: CentOS
publisher: OpenLogic
sku: '7.3'
version: latest
with_items: "{{ ids }}"
虚拟机已经部署完毕。
结束了今天的研磨会议
回顾(成就、成功的事情、反思)和感受
成果
-
- 在 Azure Cloud Shell 上使用 Ansible 部署虚拟机
-
- → 完成
-
- 从 Windows Subsystem for Linux 中使用 Ansible 部署虚拟机到 Azure
-
- → 完成
-
- 使用 Ansible 连接到创建的虚拟机
-
- → 完成
-
- 部署带有连续编号的主机名的虚拟机
-
- → 完成
-
- 在部署过程中,对虚拟机执行某些处理
- → 由于时间不够,无法完成。此外,可能无法在 Ansible 中更改清单文件的处理。
成功完成的事情 de
-
- 集中して作業できた。
-
- 概ね想定していた通りに作業を進められた。
- Slack に素早く反応できた(回答できたとは言っていない)
自我思考或反思
-
- 記事の作成に時間がかかってしまった。
-
- → デプロイ中など時間が余っていたので、その時間に記事を書き始めたほうが良かった。
-
- 周囲の人が何をしていたのか全く追えてなかった。
-
- → 最初の今日の目標をメモしてみようかな。
-
- LT の最中にも作業をしていて、細かく聞けてなかった。
- → せっかくなので次回以降はメモ取る。
思考
Azure云计算同好聚会不仅上次参加体验如此,而且这个聚会也有助于提供一个容易集中精力的环境。周围聚集了高技能的工程师,就像被吸引一样,可以专注于工作。
因为有很多技术高超的工程师聚集在一起,所以我希望能了解除了我以外的人在做什么工作(他们正在接触什么技术,针对什么市场的技术)。
在亲密会晤上的对话
可能是这边的气氛比Mokumoku会更热闹。我们将讨论的内容整理出来,如果有明了的文章可供参考,我也会提供链接(与参考链接无关)。
JetBrains ReSharper – .NET 開発者向けの Visual Studio 拡張プラグイン : エクセルソフト:
Visual Studio のコード分析拡張で、リファクタリングのアドバイスや肥大したClassのコード分割を行ってくれるとのこと。
参考: ReSharperのすすめ – Qiita
VS Code の設定ファイルの同期で2回目以降の初期設定が楽:
参考: Visual Studio Code 入門~導入から Gist による設定管理まで~ – 雀巽の日記帳
サクラエディタ SourceForge から github への移行:
現在コントリビュータを募集で興味のある方は開発方針が書かれた Wiki を見てみるといいかも。
参考: 「サクラエディタ」プロジェクトが“SourceForge.net”から“GitHub”への移行を検討 – 窓の杜
MS の Github 買収(75億ドル):
スティーブバルマー氏はOSS嫌いとして有名だったが、在任中に実はOSSと手を取り合うための準備を進めていたとのこと。バルマー後任のナディ氏によるヒットリフレッシュに書いてあるらしい。
参考: マイクロソフト、GitHub を 75 億ドルで買収へ – News Center Japan
プロジェクト管理/タスク管理のこと
Nulab Backlog:
優先順位や作業時間などを管理しやすいらしい。
Github プロジェクト:
カンバン方式でタスク管理できる。参考1、参考2
Redmine:
プロジェクト、タスク管理の有名所。Github の issse と連携できる。
AI が美容院を予約、会話の中で予約しないという判断もする:
参考: これはきづかない!AIが電話で美容院を予約 アドリブを聞かせたスムーズな会話に衝撃 – grape [グレイプ]
電子決済:
Line Pay
メルカリ 売上金の現金化 180日以内に現金化しようね、という話
投げ銭ビジネス:
動画配信者やコンテンツ配給側が過激な事をしがちなので注意しないと危ないね、という話でした。
お寿司:
寿司(概念)を開発者等に渡せる。 たまったお寿司は商品と交換できる。
リリース直後に炎上してサービス停止していたらしい。
参考1: “投げ銭”サービス「Osushi」、トラブル相次ぎ休止 運営元が返金対応 – ITmedia NEWS
参考2: なぜpaymoやKyashやpolcaがよくて、Osushiが法律的にアウトなのか?PayPalも諦めた日本の「送金」事情。 | hajipion.com
Youtube superchat:
Youtube でライブ配信中に投げ銭できる。
参考: Youtube superchat
我觉得他可能还说了很多其他的事情,但是我写不下来了,所以就到这里吧。
参考链接目录
-
- Azure 自動構築環境を作る①(Azureもくもく会 2018/05/26) – Qiita
-
- https://qiita.com/tkmry/items/7a9270bf8b41bdaac5a0
第二十三回 Azureもくもく会 @ 品川 – connpass
https://azure-moku2.connpass.com/event/88900/
Azure Cloud Shell での Bash を使用した Ansible の実行 | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/ansible/ansible-run-playbook-in-cloudshell
サクラエディタ
https://sakura-editor.github.io/
K.Takata’s software: bregonig.dll
http://k-takata.o.oo7.jp/mysoft/bregonig.html
Ubuntu を入手 – Microsoft Store ja-JP
https://www.microsoft.com/ja-jp/p/ubuntu/9nblggh4msv6
apt を使用して Linux に Azure CLI 2.0 をインストールする | Microsoft Docs
https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli-apt?view=azure-cli-latest
azure_rm_virtualmachine – Manage Azure virtual machines. — Ansible Documentation
https://docs.ansible.com/ansible/2.3/azure_rm_virtualmachine_module.html
Ansible を使用した Azure の動的インベントリの管理 | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/ansible/ansible-manage-azure-dynamic-inventories
补充注释
还没有。