Memo/Vagrant/box
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
* box: 構築済みイメージの使用 [#d076f0dd]
- https://app.vagrantup.com/boxes/search
-- centos/7
-- centos/6
-- ubuntu/focal64 (20.04 LTS)
-- ubuntu/bionic64 (18.04 LTS)
-- ubuntu/xenial64 (16.04 LTS)
- [[Memo/Vagrant/Windows]]
- [[Updated CentOS Vagrant Images Available (v1905.01) &#...
-- https://vagrantcloud.com/centos/boxes/7/versions/1905....
-- VirtualBox, VMware, LibVirt: http://cloud.centos.org/c...
- Ubuntu 18.04の場合。vagrant.box のファイルが以下にある
-- https://cloud-images.ubuntu.com/releases/bionic/
----
** S3にboxを置いて使う [#d643eea0]
----
*** vagrant-s3auth-mfa [#vb533dee]
- https://github.com/vrtdev/vagrant-s3auth
-- 2024-10: 1.5.0で動作した。
-- vagrant 2.4.x対応
-- IAM: AssumeRoleに対応
- 環境変数に必要な情報を設定すれば動作した。
#geshi(ruby){{
ENV['AWS_PROFILE'] = 'example'
ENV['AWS_REGION'] = 'ap-northeast-1'
}}
----
*** vagrant-box-s3 [#ib92c060]
- https://github.com/memiah/vagrant-box-s3
-- 2024-10: ''0.1.5 動作せず''。"--debug"付けると 「curl ...
-- vagrant 2.4.x対応
-- IAM: AssumeRoleに対応
- 環境変数に必要な情報を設定
#geshi(ruby){{
ENV['AWS_PROFILE'] = 'example'
ENV['AWS_REGION'] = 'ap-northeast-1'
}}
----
*** vagrant-s3auth: [#t0155c68]
''archiveされ更新されない。''
動作確認version:
- VirtualBox 6.1.48
- vagrant 2.2.18
- [[tried to create Proc object without a block · Is...
-- ''vagrant 2.2.18'' 以下でしか動作しない
「vagrant provision example」には非常に時間がかかる場合が...
作成済みboxをs3 privateに置く事で、複数人の利用者が使う場...
- [[WhoopInc/vagrant-s3auth: Vagrant plugin for private, ...
- 記事
-- [[vagrant-s3auth によるプライベートリポジトリ事始め | ...
- v1.3.2 はSTSに非対応。AssumeRoleが出来ない。
-- [[AWS STS credentials not supported · Issue #33 &...
-- 例: ~/.aws/credentials
#geshi(bash){{
[account1]
aws_access_key_id = ****
aws_secret_access_key = ****
[account2]
role_arn = arn:aws:iam::<account2 id>:role/<role name>
source_profile = account1
}}
-- 環境変数にSTSに必要な情報を設定すれば動作した
#geshi(ruby){{
ENV['AWS_PROFILE'] = 'example'
ENV['AWS_REGION'] = 'ap-northeast-1'
ENV['AWS_ACCESS_KEY_ID'] = 'AS***'
ENV['AWS_SECRET_ACCESS_KEY'] = '***'
ENV['AWS_SESSION_TOKEN'] = '***'
}}
-- VMが複数ある場合、その個数分だけ呼ばれるので、1回だけ...
#geshi(ruby){{
def aws_credentials(aws_profile, aws_region)
ENV.delete_if { |name| name.start_with?('AWS_') } # Fi...
ENV['AWS_PROFILE'] = aws_profile
ENV['AWS_REGION'] = aws_region
unless ENV.has_key?('AWS_ACCESS_KEY_ID')
sts_client = Aws::STS::Client.new(profile: ENV['AWS_...
caller_identity = sts_client.get_caller_identity()
# https://docs.aws.amazon.com/sdkforruby/api/Aws/STS/...
role_arn = sprintf("arn:aws:iam::%s:role/%s", caller_...
sts_creds = sts_client.assume_role({
role_arn: role_arn,
role_session_name: "vagrant",
})
ENV['AWS_ACCESS_KEY_ID'] = sts_creds.credentials.acce...
ENV['AWS_SECRET_ACCESS_KEY'] = sts_creds.credentials....
ENV['AWS_SESSION_TOKEN'] = sts_creds.credentials.sess...
end
end
if vgconfig.has_key?("aws_profile") and ( ARGV[0].downcas...
aws_credentials(vgconfig["aws_profile"], vgconfig["aws_...
end
}}
-- s3のread権限があれば良さそうだが、何故かreadonly権限(R...
#geshi(bash){{
Message: Aws::STS::Errors::AccessDenied: User: arn:aws:st...
}}
-- awscliではReadOnlyAccessのprofileを指定しても問題なく...
- Vagrantfile内でboxを指定する部分
#geshi(ruby){{
vmconfig.vm.box = "centos-7-zabbix-3-server"
vmconfig.vm.box_url = "s3://bucket/zabbix/3/vagrant/x86...
vmconfig.vm.box_version = "20190102.1" # 古いバージョン...
}}
----
** boxのバージョン指定 [#ua3d07a2]
- [[Box Versioning | Vagrant by HashiCorp:https://www.vag...
利用側:
- Vagrantfile内では「config.vm.box_version=X.Y.X」で指定...
- 「vagrant box update」で最新のboxを取得する。
作成側:
- [[s3にboxを置く>Memo/Vagrant#d643eea0]] 場合のレイアウ...
-- 例: zabbixはserver, proxy, agent, java gateway等複数の...
#geshi(text){{
s3://<bucket>/<app>/<app major version>/vagrant/<arch>/<o...
s3://bucket/zabbix/3/vagrant/x86_64/centos-7-zabbix-3-ser...
}}
- s3://bucket/zabbix/3/vagrant/x86_64/centos-7-zabbix-3-s...
#geshi(javascript){{
{
"description": "CentOS 7, zabbix 3 server",
"name": "centos-7-zabbix-3-server",
"versions": [
{
"providers": [
{
"checksum": "000000000000000000000000...
"checksum_type": "sha1",
"name": "virtualbox",
"url": "s3://bucket/zabbix/3/vagrant/...
}
],
"version": "20190102.1"
},
{
"providers": [
{
"checksum": "000000000000000000000000...
"checksum_type": "sha1",
"name": "virtualbox",
"url": "s3://bucket/zabbix/3/vagrant/...
}
],
"version": "20190203.1"
}
]
}
}}
----
** ~/vagrant/.vagrant.d/ が肥大化している場合 [#n6c2afec]
- ダウンロード済みboxが以下に貯まる。
#geshi(bash){{
du -sh ~/vagrant/.vagrant.d/
}}
- 古いバージョンの削除
#geshi(bash){{
vagrant box prune
}}
- 不用なboxの削除
#geshi(bash){{
vagrant box list
}}
----
** boxファイルの圧縮 [#qfc65aa2]
- CentOS 6/7の場合。
#geshi(bash){{
# yumのキャッシュを削除
yum clean all
# 圧縮が効きやすいように0で埋めて、消す。rmを2行に分割す...
dd if=/dev/zero of=/EMPTY bs=1M || echo "dd exit code $? ...
}}
- 記事
-- [[vagrant用のboxサイズを小さくしたい | ベンキョーベヤ...
-- [[vagrantでboxファイル圧縮 [ProviderがVirtualBoxの場合...
-- [[Vagrantのvmdkファイルが肥大化してたので圧縮したら容...
環境:
- VirtualBox 6.0.14
- vagrant 2.2.6
- box: centos/7 1910
サイズ:
- centos/7: 415MB
- centos/7 + vbguest: 900MB
- centos/7 + vbguest + yum clean all + dd /EMPTY: 705MB
vboxmanageを使った圧縮:
- VMのUUIDをメモ
#geshi(bash){{
vboxmanage list hdds
...
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
...
}}
- vboxmanageの圧縮(--compact)が対応しているのが、.vdi形式...
#geshi(bash){{
vboxmanage clonehd <name>.vmdk <name>.vdi --format vdi
vboxmanage modifyhd <name>.vdi --compact
rm <name>.vmdk
vboxmanage clonehd <name>.vdi <name>.vmdk --format vmdk
}}
終了行:
#contents
* box: 構築済みイメージの使用 [#d076f0dd]
- https://app.vagrantup.com/boxes/search
-- centos/7
-- centos/6
-- ubuntu/focal64 (20.04 LTS)
-- ubuntu/bionic64 (18.04 LTS)
-- ubuntu/xenial64 (16.04 LTS)
- [[Memo/Vagrant/Windows]]
- [[Updated CentOS Vagrant Images Available (v1905.01) &#...
-- https://vagrantcloud.com/centos/boxes/7/versions/1905....
-- VirtualBox, VMware, LibVirt: http://cloud.centos.org/c...
- Ubuntu 18.04の場合。vagrant.box のファイルが以下にある
-- https://cloud-images.ubuntu.com/releases/bionic/
----
** S3にboxを置いて使う [#d643eea0]
----
*** vagrant-s3auth-mfa [#vb533dee]
- https://github.com/vrtdev/vagrant-s3auth
-- 2024-10: 1.5.0で動作した。
-- vagrant 2.4.x対応
-- IAM: AssumeRoleに対応
- 環境変数に必要な情報を設定すれば動作した。
#geshi(ruby){{
ENV['AWS_PROFILE'] = 'example'
ENV['AWS_REGION'] = 'ap-northeast-1'
}}
----
*** vagrant-box-s3 [#ib92c060]
- https://github.com/memiah/vagrant-box-s3
-- 2024-10: ''0.1.5 動作せず''。"--debug"付けると 「curl ...
-- vagrant 2.4.x対応
-- IAM: AssumeRoleに対応
- 環境変数に必要な情報を設定
#geshi(ruby){{
ENV['AWS_PROFILE'] = 'example'
ENV['AWS_REGION'] = 'ap-northeast-1'
}}
----
*** vagrant-s3auth: [#t0155c68]
''archiveされ更新されない。''
動作確認version:
- VirtualBox 6.1.48
- vagrant 2.2.18
- [[tried to create Proc object without a block · Is...
-- ''vagrant 2.2.18'' 以下でしか動作しない
「vagrant provision example」には非常に時間がかかる場合が...
作成済みboxをs3 privateに置く事で、複数人の利用者が使う場...
- [[WhoopInc/vagrant-s3auth: Vagrant plugin for private, ...
- 記事
-- [[vagrant-s3auth によるプライベートリポジトリ事始め | ...
- v1.3.2 はSTSに非対応。AssumeRoleが出来ない。
-- [[AWS STS credentials not supported · Issue #33 &...
-- 例: ~/.aws/credentials
#geshi(bash){{
[account1]
aws_access_key_id = ****
aws_secret_access_key = ****
[account2]
role_arn = arn:aws:iam::<account2 id>:role/<role name>
source_profile = account1
}}
-- 環境変数にSTSに必要な情報を設定すれば動作した
#geshi(ruby){{
ENV['AWS_PROFILE'] = 'example'
ENV['AWS_REGION'] = 'ap-northeast-1'
ENV['AWS_ACCESS_KEY_ID'] = 'AS***'
ENV['AWS_SECRET_ACCESS_KEY'] = '***'
ENV['AWS_SESSION_TOKEN'] = '***'
}}
-- VMが複数ある場合、その個数分だけ呼ばれるので、1回だけ...
#geshi(ruby){{
def aws_credentials(aws_profile, aws_region)
ENV.delete_if { |name| name.start_with?('AWS_') } # Fi...
ENV['AWS_PROFILE'] = aws_profile
ENV['AWS_REGION'] = aws_region
unless ENV.has_key?('AWS_ACCESS_KEY_ID')
sts_client = Aws::STS::Client.new(profile: ENV['AWS_...
caller_identity = sts_client.get_caller_identity()
# https://docs.aws.amazon.com/sdkforruby/api/Aws/STS/...
role_arn = sprintf("arn:aws:iam::%s:role/%s", caller_...
sts_creds = sts_client.assume_role({
role_arn: role_arn,
role_session_name: "vagrant",
})
ENV['AWS_ACCESS_KEY_ID'] = sts_creds.credentials.acce...
ENV['AWS_SECRET_ACCESS_KEY'] = sts_creds.credentials....
ENV['AWS_SESSION_TOKEN'] = sts_creds.credentials.sess...
end
end
if vgconfig.has_key?("aws_profile") and ( ARGV[0].downcas...
aws_credentials(vgconfig["aws_profile"], vgconfig["aws_...
end
}}
-- s3のread権限があれば良さそうだが、何故かreadonly権限(R...
#geshi(bash){{
Message: Aws::STS::Errors::AccessDenied: User: arn:aws:st...
}}
-- awscliではReadOnlyAccessのprofileを指定しても問題なく...
- Vagrantfile内でboxを指定する部分
#geshi(ruby){{
vmconfig.vm.box = "centos-7-zabbix-3-server"
vmconfig.vm.box_url = "s3://bucket/zabbix/3/vagrant/x86...
vmconfig.vm.box_version = "20190102.1" # 古いバージョン...
}}
----
** boxのバージョン指定 [#ua3d07a2]
- [[Box Versioning | Vagrant by HashiCorp:https://www.vag...
利用側:
- Vagrantfile内では「config.vm.box_version=X.Y.X」で指定...
- 「vagrant box update」で最新のboxを取得する。
作成側:
- [[s3にboxを置く>Memo/Vagrant#d643eea0]] 場合のレイアウ...
-- 例: zabbixはserver, proxy, agent, java gateway等複数の...
#geshi(text){{
s3://<bucket>/<app>/<app major version>/vagrant/<arch>/<o...
s3://bucket/zabbix/3/vagrant/x86_64/centos-7-zabbix-3-ser...
}}
- s3://bucket/zabbix/3/vagrant/x86_64/centos-7-zabbix-3-s...
#geshi(javascript){{
{
"description": "CentOS 7, zabbix 3 server",
"name": "centos-7-zabbix-3-server",
"versions": [
{
"providers": [
{
"checksum": "000000000000000000000000...
"checksum_type": "sha1",
"name": "virtualbox",
"url": "s3://bucket/zabbix/3/vagrant/...
}
],
"version": "20190102.1"
},
{
"providers": [
{
"checksum": "000000000000000000000000...
"checksum_type": "sha1",
"name": "virtualbox",
"url": "s3://bucket/zabbix/3/vagrant/...
}
],
"version": "20190203.1"
}
]
}
}}
----
** ~/vagrant/.vagrant.d/ が肥大化している場合 [#n6c2afec]
- ダウンロード済みboxが以下に貯まる。
#geshi(bash){{
du -sh ~/vagrant/.vagrant.d/
}}
- 古いバージョンの削除
#geshi(bash){{
vagrant box prune
}}
- 不用なboxの削除
#geshi(bash){{
vagrant box list
}}
----
** boxファイルの圧縮 [#qfc65aa2]
- CentOS 6/7の場合。
#geshi(bash){{
# yumのキャッシュを削除
yum clean all
# 圧縮が効きやすいように0で埋めて、消す。rmを2行に分割す...
dd if=/dev/zero of=/EMPTY bs=1M || echo "dd exit code $? ...
}}
- 記事
-- [[vagrant用のboxサイズを小さくしたい | ベンキョーベヤ...
-- [[vagrantでboxファイル圧縮 [ProviderがVirtualBoxの場合...
-- [[Vagrantのvmdkファイルが肥大化してたので圧縮したら容...
環境:
- VirtualBox 6.0.14
- vagrant 2.2.6
- box: centos/7 1910
サイズ:
- centos/7: 415MB
- centos/7 + vbguest: 900MB
- centos/7 + vbguest + yum clean all + dd /EMPTY: 705MB
vboxmanageを使った圧縮:
- VMのUUIDをメモ
#geshi(bash){{
vboxmanage list hdds
...
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
...
}}
- vboxmanageの圧縮(--compact)が対応しているのが、.vdi形式...
#geshi(bash){{
vboxmanage clonehd <name>.vmdk <name>.vdi --format vdi
vboxmanage modifyhd <name>.vdi --compact
rm <name>.vmdk
vboxmanage clonehd <name>.vdi <name>.vmdk --format vmdk
}}
ページ名: