Translate

2012年6月7日木曜日

Ubuntu Server 12.04LTSへOpenStack essexをインストールする

OpenStack essexをインストールしてみた。
上図のような環境で試した。
CloudStackの時は管理コンソールを別だてしたが
参考にした
OpenStack Compute Statrt Guide(May 4, 2012)
を読んだら、
Server1をそのまま実行したら単一サーバになることが
書かれていたので1台こっきりでたてた。

Ubuntu Desktopたてたらおそらく
UltraVNCするPCも不要だが
まあ念のため。




とりあえず500GBは
  • /dev/sda1 16GB スワップ
  • /dev/sda2 84GB OS(/)
  • /dev/sda3 200GB nova-volume用(マウントせず→/mnt/swift_backend)
  • /dev/sda4 200GB swift用(マウントせず)
に分けた。
初めてのインストールなので、
配分はおそらくめちゃくちゃだとおもう。


以下インストール手順を、一挙手一投足をなるべく書きだしてみた。




1. Ubuntu Server 12.04 LTS インストール
  • Ubuntu Server 12.04LTS DVDを差し電源投入
  • 日本語
  • Ubuntu Serverをインストール
  • はい
  • 日本
  • 日本語
  • 日本語 - 日本語 (かな 86)
  • Alt+Shift
  • 戻る
  • ネットワークを手動で設定
  • 192.168.11.101
  • 255.255.255.0
  • 192.168.11.1
  • 8.8.8.8
  • shun
  • fugafuga.jp
  • OpenStack Administrator
  • localadmin
  • (パスワード)
  • (パスワード)
  • はい※脆弱なパスワードの場合
  • いいえ
  • 手動
         ※SCSI1 (0,0,0) (sda) - 500.1 GB ATA Hitachi HDS72105以下のパーティションを全部削除
  • 1.基本 8.0GB F スワップ スワップ
  • パーティションの削除
  • 2.基本 40.0GB B ext4
  • パーティションの削除
  • 3.基本 200.0GB
  • パーティションの削除
  • 4.基本 252.1GB xfs
  • パーティションの削除
        ※SCSI1 (0,0,0) (sda) - 500.1 GB ATA Hitachi HDS72105のパーティションを再設定
  • 基/論 500.1GB 空き領域
  • 新しいパーティションの作成
  • 16.0 GB
  • 基本パーティション
  • 先頭
  • 利用方法: ext4 ジャーナリングファイルシステム
  • スワップ領域
  • パーティションのセットアップを終了
  • 基/論 484.1GB 空き領域
  • 新しいパーティションの作成
  • 84.1 GB
  • 基本パーティション
  • 先頭
  • パーティションのセットアップを終了
  • 基/論 400.0GB 空き領域
  • 新しいパーティションの作成
  • 200.0 GB
  • 基本パーティション
  • 先頭
  • マウントポイント: /home
  • マウントしない
  • パーティションのセットアップを終了
  • 基/論 200.0GB 空き領域
  • 新しいパーティションの作成
  • 200.0 GB
  • 基本パーティション
  • 先頭
  • マウントポイント: /home
  • マウントしない
  • パーティションのセットアップを終了
  • パーティショニングの終了とディスクへの変更の書き込み
  • いいえ
  • いいえ
  • はい
  • http://proxy:8080/
  • セキュリティアップデートを自動的にインストールする
  • OpenSSH serverをチェック
  • 続ける
  • はい
  • 続ける
        ※リブート

2. OpenStack essexインストール
       ※OpenStack Compute Starter Guide May 4,2012を元にインストール作業
  • Server1とServer2を1台にする
  • 同一NICに対してeth0:0を設け、192.168.3.1を割り当てるとする


2.1 準備
  • localadminでログイン
  • sudo su -
  • (localadminパスワード)
  • aptitude update && aptitude -y dist-upgrade && aptitude -y install ntp bridge-utils
  • vi /etc/sysctl.conf
※最終行に追加
net.ipv6.conf.all.disable_ipv6 = 1
  • sysctl -p
  • vi /etc/network/interfaces
※最終行に追加
# The secondary network interface
auto eth0:0
iface eth0:0 inet static
        address 192.168.3.1
        netmask 255.255.255.0
        network 192.168.3.0
        broadcast 192.168.3.255
  • /etc/init.d/networking restart
  • vi /etc/ntp.conf
※編集元
# Use Ubuntu's ntp server as a fallback.
server ntp.ubuntu.com
※編集後
# Use Ubuntu's ntp server as a fallback.
server ntp.ubuntu.com
server 127.127.1.0
fudge 127.127.1.0 strtum 10
  • service ntp restart


2.2 データベース
  • aptitude -y install mysql-server python-mysqldb
  • mygreatsecret(MySQL rootパスワード)
  • mygreatsecret(MySQL rootパスワード)
  • mysql -uroot -pmygreatsecret -e "CREATE DATABASE nova;"
  • mysql -uroot -pmygreatsecret -e "CREATE USER novadbadmin;"
  • mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%';"
  • mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'novadbadmin'@'%' = PASSWORD('novasecret');"
  • mysql -uroot -pmygreatsecret -e "CREATE DATABASE glance;"
  • mysql -uroot -pmygreatsecret -e "CREATE USER glancedbadmin;"
  • mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%';"
  • mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'glancedbadmin'@'%' = PASSWORD('glancesecret');"
  • mysql -uroot -pmygreatsecret -e "CREATE DATABASE keystone;"
  • mysql -uroot -pmygreatsecret -e "CREATE USER keystonedbadmin;"
  • mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystonedbadmin'@'%';"
  • mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'keystonedbadmin'@'%' = PASSWORD('keystonesecret');"

2.3 Keystone
  • aptitude -y install keystone python-keystone python-keystoneclient
  • vi /etc/keystone/keystone.conf
※編集前
admin_token = ADMIN
※編集後
admin_token = admin

※編集前
connection = sqlite:////var/lib/keystone/keystone.db
※編集後
connection = mysql://keystonedbadmin:keystonesecret@192.168.11.101/keystone
  • vi ~/.bashrc
※最終行に追加
export SERVICE_ENDPOINT="http://localhost:35357/v2.0"
export SERVICE_TOKEN=admin
  • exit
  • sudo su -
  • (localadminパスワード)
  • keystone tenant-create --name admin
  • keystone tenant-create --name service
  • keystone user-create --name admin --pass admin --email hogehoge@fugafuga.jp
  • keystone user-create --name nova --pass nova --email hogehoge@fugafuga.jp
  • keystone user-create --name glance --pass glance --email hogehoge@fugafuga.jp
  • keystone user-create --name swift --pass swift --email hogehoge@fugafuga.jp
  • keystone role-create --name admin
  • keystone role-create --name Member
  • keystone tenant-list
※tenant idとnameの結果をメモる
  • keystone user-list
※user idとnameの結果をメモる
  • keystone role-list
※role idとnameの結果をメモる
  • keystone user-role-add --user adminのID --role adminのID --tenant_id adminのID
  • keystone user-role-add --user novaのID --role adminのID --tenant_id serviceのID
  • keystone user-role-add --user glanceのID --role adminのID --tenant_id serviceのID
  • keystone user-role-add --user swiftのID --role adminのID --tenant_id serviceのID
  • keystone user-role-add --user adminのID --role MemberのID --tenant_id adminのID
  • keystone service-create --name nova --type compute --description 'OpenStack Compute Service'keystone service-create --name volume --type volume --description 'OpenStack Volume Service'
  • keystone service-create --name glance --type image --description 'OpenStack Image Service'
  • keystone service-create --name swift --type object-store --description 'OpenStack Storage Service'
  • keystone service-create --name keystone --type identity --description 'OpenStack Identity Service'
  • keystone service-create --name ec2 --type ec2 --description 'EC2 Service'
  • keystone service-list
 ※service idとnameの結果をメモる




    • keystone endpoint-create --region myregion --service_id novaのservice_ID --publicurl 'http://160.14.101.85:8774/v2/$(tenant_id)s' --adminurl 'http://160.14.101.85:8774/v2/$(tenant_id)s' --internalurl 'http://160.14.101.85:8774/v2/$(tenant_id)s'
    • keystone endpoint-create --region myregion --service_id volumeのservice_ID --publicurl 'http://160.14.101.85:8776/v1/$(tenant_id)s' --adminurl 'http://160.14.101.85:8776/v1/$(tenant_id)s' --internalurl 'http://160.14.101.85:8776/v1/$(tenant_id)s'
    • keystone endpoint-create --region myregion --service_id glanceのservice_ID --publicurl 'http://160.14.101.85:9292/v1' --adminurl 'http://160.14.101.85:9292/v1' --internalurl 'http://160.14.101.85:9292/v1'
    • keystone endpoint-create --region myregion --service_id swiftのservice_ID --publicurl 'http://160.14.101.85:8080/v1/AUTH_$(tenant_id)s' --adminurl 'http://160.14.101.85:8080/v1' --internalurl 'http://160.14.101.85:8080/v1/AUTH_$(tenant_id)s'
    • keystone endpoint-create --region myregion --service_id keystoneのservice_ID --publicurl 'http://160.14.101.85:5000/v2.0' --adminurl 'http://160.14.101.85:35357/v2.0' --internalurl 'http://160.14.101.85:5000/v2.0'
    • keystone endpoint-create --region myregion --service_id ec2のservice_ID --publicurl 'http://160.14.101.85:8773/services/Cloud' --adminurl 'http://160.14.101.85:8773/services/Admin' --internalurl 'http://160.14.101.85:8773/services/Cloud'



    2.4 Glance

    • aptitude -y install glance glance-api glance-client glance-common glance-registry python-glance
    • vi /etc/glance/glance-api-paste.ini
     ※編集前
     admin_tenant_name = %SERVICE_TENANT_NAME%
     admin_user = %SERVICE_USER%
     admin_password = %SERVICE_PASSWORD%
     ※編集後
     admin_tenant_name = service
     admin_user = glance
     admin_password = glance

    • vi /etc/glance/glance-registry-paste.ini
     ※編集前
     admin_tenant_name = %SERVICE_TENANT_NAME%
     admin_user = %SERVICE_USER%
     admin_password = %SERVICE_PASSWORD%
     ※編集後
     admin_tenant_name = service
     admin_user = glance
     admin_password = glance

    • vi /etc/glance/glance-registry.conf
     ※編集前
     sql_connection = sqlite:////var/lib/glance/glance.sqlite
     ※編集後
     sql_connection = mysql://glancedbadmin:glancesecret@192.168.11.101/glance
     ※最終行に追加
     [paste_deploy]
     flavor = keystone
    • vi /etc/glance/glance-api.conf
     ※最終行に追加
     [paste_deploy]
     flavor = keystone
    • glance-manage version_control 0
    • glance-manage db_sync
     ※以下のようなエラー発生する
     /usr/lib/python2.7/dist-packages/glance/registry/db/migrate_repo/versions/003_add_disk_format.py:47: SADeprecationWarning: useexisting is deprecated.  Use extend_existing.
       useexisting=True)
     ※これはインデックスix_image_properties_name作成する行にセミコロンがなかった
      バグらしいので手動で作ればクリアできる
    •  mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'localhost';"
    •  mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'glancedbadmin'@'localhost' = PASSWORD('glancesecret');"
    •  mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'shun';"
    •  mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'glancedbadmin'@'shun' = PASSWORD('glancesecret');"
    •  mysql -uglancedbadmin -pglancesecret glance -e "CREATE INDEX ix_image_properties_name ON image_properties (name);"
    • glance-manage db_sync
     ※なにも表示されなければOK
     ※2012/09/06更新上記太字SQL文が途中で消えてましたすみません

    • restart glance-api
    • restart glance-registry
    • vi .bashrc
     ※最終行に追加
     export OS_TENANT_NAME=admin
     export OS_USERNAME=admin
     export OS_PASSWORD=admin
     export OS_AUTH_URL="http://localhost:5000/v2.0/"
    • exit
    • sudo su -
    • (localadminパスワード)
    • glance index


    2.5 Nova

    • aptitude -y install nova-api nova-cert nova-compute nova-compute-kvm nova-doc nova-network nova-objectstore nova-scheduler nova-volume rabbitmq-server novnc nova-consoleauth
    • vi /etc/nova/nova.conf
     ※既存の行をすべて#でコメントアウト
     ※最終行に追加
     --dhcpbridge_flagfile=/etc/nova/nova.conf
     --dhcpbridge=/usr/bin/nova-dhcpbridge
     --logdir=/var/log/nova
     --state_path=/var/lib/nova
     --lock_path=/run/lock/nova
     --allow_admin_api=true
     --use_deprecated_auth=false
     --auth_strategy=keystone
     --scheduler_driver=nova.scheduler.simple.SimpleScheduler
     #--s3_host=10.10.10.2
     --s3_host=192.168.11.101
     #--ec2_host=10.10.10.2
     --ec2_host=192.168.11.101
     #--rabbit_host=10.10.10.2
     --rabbit_host=192.168.11.101
     #--cc_host=10.10.10.2
     --cc_host=192.168.11.101
     #--nova_url=http://10.10.10.2:8774/v1.1/
     --nova_url=http://192.168.11.101:8774/v1.1/
     #--routing_source_ip=10.10.10.2
     --routing_source_ip=192.168.11.101
     #--glance_api_servers=10.10.10.2:9292
     --glance_api_servers=192.168.11.101:9292
     --image_service=nova.image.glance.GlanceImageService
     #--iscsi_ip_prefix=192.168.4
     #--sql_connection=mysql://novadbadmin:novasecret@10.10.10.2/nova
     --sql_connection=mysql://novadbadmin:novasecret@192.168.11.101/nova
     #--ec2_url=http://10.10.10.2:8773/services/Cloud
     --ec2_url=http://192.168.11.101:8773/services/Cloud
     #--keystone_ec2_url=http://10.10.10.2:5000/v2.0/ec2tokens
     --keystone_ec2_url=http://192.168.11.101:5000/v2.0/ec2tokens
     --api_paste_config=/etc/nova/api-paste.ini
     --libvirt_type=kvm
     --libvirt_use_virtio_for_bridges=true
     --start_guests_on_host_boot=true
     --resume_guests_state_on_host_boot=true
     # vnc specific configuration
     --novnc_enabled=true
     #--novncproxy_base_url=http://10.10.10.2:6080/vnc_auto.html
     --novncproxy_base_url=http://192.168.11.101:6080/vnc_auto.html
     #--vncserver_proxyclient_address=10.10.10.2
     --vncserver_proxyclient_address=192.168.11.101
     #--vncserver_listen=10.10.10.2
     --vncserver_listen=0.0.0.0
     # network specific settings
     --network_manager=nova.network.manager.FlatDHCPManager
     --public_interface=eth0
     #--flat_interface=eth1
     --flat_interface=eth0
     --flat_network_bridge=br100
     #--fixed_range=192.168.4.1/27
     --fixed_range=192.168.11.0/24
     #--floating_range=10.10.10.2/27
     --network_size=32
     #--flat_network_dhcp_start=192.168.4.33
     --flat_injected=False
     #--force_dhcp_release
     --force_dhcp_release=True
     #--iscsi_helper=tgtadm
     --connection_type=libvirt
     --root_helper=sudo nova-rootwrap
     --ec2_private_dns_show_ip
     --verbose
    • fdisk -l
     ※nova用領域のデバイス名を確認する
    • pvcreate /dev/sda3
    • vgcreate nova-volumes /dev/sda3
     ※sをうっかり忘れないように。VG名は決め打ち。VG名を誤るとnova-volumeが起動しない
    • chown -R nova:nova /etc/nova
    • chmod 644 /etc/nova/nova.conf
    • vi /etc/nova/api-paste.ini
     ※編集前
     admin_tenant_name = %SERVICE_TENANT_NAME%
     admin_user = %SERVICE_USER%
     admin_password = %SERVICE_PASSWORD%
     ※編集後
     admin_tenant_name = service
     admin_user = nova
     admin_password = nova
    • nova-manage db sync
     ※以下のようなメッセージが出るがDEBUGなので無視する
     2012-06-07 11:21:54 DEBUG nova.utils [-] backend from (pid=31700) __get_backend /usr/lib/python2.7/dist-packages/nova/utils.py:658
    • nova-manage network create private --fixed_range_v4=192.168.4.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth0:0 --network_size=32
     ※以下のようなメッセージが出るがDEBUGなので無視する
     2012-06-07 11:24:43 DEBUG nova.utils [req-911a5093-596c-4499-a9ae-ae22f9fe64e0 None None] backend from (pid=31893) __get_backend /usr/lib/python2.7/dist-packages/nova/utils.py:658
    • restart libvirt-bin;restart nova-network; restart nova-compute; restartnova-api; restart nova-objectstore; restart nova-scheduler; service nova-volume restart; restart nova-consoleauth;
     ※Guideにあるrestart nova-volumeが動かないのでserviceコマンドで代用
    • nova-manage service list
     

    2.6 Horizon(OpenStack Dashboard)

    • aptitude -y install openstack-dashboard
    • service apache2 restart


    2.7 Swift

    • aptitude -y install swift swift-proxy swift-account swift-container swift-object
    • aptitude -y install xfsprogs curl python-pastedeploy
    • fdisk -l
     ※swift用パーティション名を確認する
    • mkfs.xfs -i size=1024 /dev/sda4 -f
     ※Guideには-fがないが、-fをつけるように指示される
     ※tune2fsは実行せず次へ進む
    • mkdir /mnt/swift_backend
    • vi /etc/fstab
     ※最終行に追加
     /dev/sda4 /mnt/swift_backend xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
    • mount /mnt/swift_backend
    • cd /mnt/swift_backend/
    • mkdir node1 node2 node3 node4
    • chown swift.swift /mnt/swift_backend/*
    • for i in {1..4};do ln -s /mnt/swift_backend/node$i /srv/node$i; done;
    • mkdir -p /etc/swift/account-server /etc/swift/container-server /etc/swift/object-server /srv/node1/device /srv/node2/device /srv/node3/device /srv/node4/device
    • mkdir /run/swift
    • vi /etc/rc.local
     ※exit 0という行の前に以下の行を挿入
     sudo mkdir /run/swift
     sudo chown swift.swift /run/swift
    • vi /etc/default/rsync
     ※編集前
     RSYNC_ENABLE=false
     ※編集後
     RSYNC_ENABLE=true
    • vi /etc/rsyncd.conf
     ※新規作成
     [DEFAULT]
     bind_port = 8080
     user = swift
     swift_dir = /etc/swift
     
     [pipeline:main]
     # Order of execution of modules defined below
     pipeline = catch_errors healthcheck cache authtoken keystone proxy-server
     
     [app:proxy-server]
     use = egg:swift#proxy
     allow_account_management = true
     account_autocreate = true
     set log_name = swift-proxy
     set log_facility = LOG_LOCAL0
     set log_level = INFO
     set access_log_name = swift-proxy
     set access_log_facility = SYSLOG
     set access_log_level = INFO
     set log_headers = True
     account_autocreate = True
     
     [filter:healthcheck]
     use = egg:swift#healthcheck
     
     [filter:catch_errors]
     use = egg:swift#catch_errors
     
     [filter:cache]
     use = egg:swift#memcache
     set log_name = cache
     
     [filter:authtoken]
     paste.filter_factory = keystone.middleware.auth_token:filter_factory
     auth_protocol = http
     auth_host = 127.0.0.1
     auth_port = 35357
     auth_token = admin
     service_protocol = http
     service_host = 127.0.0.1
     service_port = 5000
     admin_token = admin
     admin_tenant_name = service
     admin_user = swift
     admin_password = swift
     delay_auth_decision = 0
     
     [filter:keystone]
     paste.filter_factory = keystone.middleware.swift_auth:filter_factory
     operator_roles = admin, swiftoperator
     is_admin = true
    • service rsync status
    • od -t x8 -N 8 -A n < /dev/random
     ※表示される文字列をメモる
    • vi /etc/swift/swift.conf
     ※編集前
     swift_hash_path_suffix = 03c9f48da2229770
     ※編集後
     swift_hash_path_suffix = <メモった文字列>
    • vi cat /etc/rsyncd.conf
     ※新規作成
     # General stuff
     uid = swift
     gid = swift
     log file = /var/log/rsyncd.log
     pid file = /run/rsyncd.pid
     address = 127.0.0.1
     
     # Account Server replication settings
     
     [account6012]
     max connections = 25
     path = /srv/node1/
     read only = false
     lock file = /run/lock/account6012.lock
     
     [account6022]
     max connections = 25
     path = /srv/node2/
     read only = false
     lock file = /run/lock/account6022.lock
     
     [account6032]
     max connections = 25
     path = /srv/node3/
     read only = false
     lock file = /run/lock/account6032.lock
     
     [account6042]
     max connections = 25
     path = /srv/node4/
     read only = false
     lock file = /run/lock/account6042.lock
     
     # Container server replication settings
     
     [container6011]
     max connections = 25
     path = /srv/node1/
     read only = false
     lock file = /run/lock/container6011.lock
     
     [container6021]
     max connections = 25
     path = /srv/node2/
     read only = false
     lock file = /run/lock/container6021.lock
     
     [container6031]
     max connections = 25
     path = /srv/node3/
     read only = false
     lock file = /run/lock/container6031.lock
     
     [container6041]
     max connections = 25
     path = /srv/node4/
     read only = false
     lock file = /run/lock/container6041.lock
     
     # Object Server replication settings
     
     [object6010]
     max connections = 25
     path = /srv/node1/
     read only = false
     lock file = /run/lock/object6010.lock
     
     [object6020]
     max connections = 25
     path = /srv/node2/
     read only = false
     lock file = /run/lock/object6020.lock
     
     [object6030]
     max connections = 25
     path = /srv/node3/
     read only = false
     lock file = /run/lock/object6030.lock
     
     [object6040]
     max connections = 25
     path = /srv/node4/
     read only = false
     lock file = /run/lock/object6040.lock
    • cp /etc/swift/account-server.conf /etc/swift/account-server/1.conf
    • vi /etc/swift/account-server/1.conf
     ※編集前
     [DEFAULT]
     bind_ip = 0.0.0.0
     workers = 2
     
     [pipeline:main]
     pipeline = account-server
     
     [app:account-server]
     use = egg:swift#account
     
     [account-replicator]
     
     [account-auditor]
     
     [account-reaper]
     ※編集後
     [DEFAULT]
     devices = /srv/node1
     mount_check = false
     bind_port = 6012
     user = swift
     log_facility = LOG_LOCAL2
     
     [pipeline:main]
     pipeline = account-server
     
     [app:account-server]
     use = egg:swift#account
     
     [account-replicator]
     vm_test_mode = no
     
     [account-auditor]
     
     [account-reaper]
    • cp /etc/swift/account-server/1.conf /etc/swift/account-server/2.conf
    • cp /etc/swift/account-server/1.conf /etc/swift/account-server/3.conf
    • cp /etc/swift/account-server/1.conf /etc/swift/account-server/4.conf
    • sed -i 's/6012/6022/g;s/LOCAL2/LOCAL3/g;s/node1/node2/g' /etc/swift/account-server/2.conf
    • sed -i 's/6012/6032/g;s/LOCAL2/LOCAL4/g;s/node1/node3/g' /etc/swift/account-server/3.conf
    • sed -i 's/6012/6042/g;s/LOCAL2/LOCAL5/g;s/node1/node4/g' /etc/swift/account-server/4.conf
    • vi /etc/swift/container-server.conf
     ※最終行に追加
     [container-sync]
    • vi /etc/swift/container-server/1.conf
     ※以下のように編集
     [DEFAULT]
     devices = /srv/node1
     mount_check = false
     bind_port = 6011
     user = swift
     log_facility = LOG_LOCAL2
     
     [pipeline:main]
     pipeline = container-server
     
     [app:container-server]
     use = egg:swift#container
     
     [container-replicator]
     vm_test_mode = no
     
     [container-updater]
     
     [container-auditor]
     
     [container-sync]
    • cp /etc/swift/container-server/1.conf /etc/swift/container-server/2.conf
    • cp /etc/swift/container-server/1.conf /etc/swift/container-server/3.conf
    • cp /etc/swift/container-server/1.conf /etc/swift/container-server/4.conf
    • sed -i 's/6011/6021/g;s/LOCAL2/LOCAL3/g;s/node1/node2/g' /etc/swift/container-server/2.conf
    • sed -i 's/6011/6031/g;s/LOCAL2/LOCAL4/g;s/node1/node3/g' /etc/swift/container-server/3.conf
    • sed -i 's/6011/6041/g;s/LOCAL2/LOCAL5/g;s/node1/node4/g' /etc/swift/container-server/4.conf
    • cp /etc/swift/object-server.conf /etc/swift/container-server/2.conf
    • cp /etc/swift/object-server.conf /etc/swift/container-server/3.conf
    • cp /etc/swift/object-server.conf /etc/swift/container-server/4.conf
    • sed -i 's/6010/6020/g;s/LOCAL2/LOCAL3/g;s/node1/node2/g' /etc/swift/object-server/2.conf
    • sed -i 's/6010/6030/g;s/LOCAL2/LOCAL4/g;s/node1/node3/g' /etc/swift/object-server/3.conf
    • sed -i 's/6010/6040/g;s/LOCAL2/LOCAL5/g;s/node1/node4/g' /etc/swift/object-server/4.conf
    • cd /etc/swift/
    • swift-ring-builder object.builder create 18 3 1
    • swift-ring-builder container.builder create 18 3 1
    • swift-ring-builder account.builder create 18 3 1
    • swift-ring-builder object.builder add z1-127.0.0.1:6010/device 1
    • swift-ring-builder object.builder add z2-127.0.0.1:6020/device 1
    • swift-ring-builder object.builder add z3-127.0.0.1:6030/device 1
    • swift-ring-builder object.builder add z4-127.0.0.1:6040/device 1
    • swift-ring-builder object.builder rebalance
    • swift-ring-builder container.builder add z1-127.0.0.1:6011/device 1
    • swift-ring-builder container.builder add z2-127.0.0.1:6021/device 1
    • swift-ring-builder container.builder add z3-127.0.0.1:6031/device 1
    • swift-ring-builder container.builder add z4-127.0.0.1:6041/device 1
    • swift-ring-builder container.builder rebalance
    • swift-ring-builder account.builder add z1-127.0.0.1:6012/device 1
    • swift-ring-builder account.builder add z2-127.0.0.1:6022/device 1
    • swift-ring-builder account.builder add z3-127.0.0.1:6032/device 1
    • swift-ring-builder account.builder add z4-127.0.0.1:6042/device 1
    • swift-ring-builder account.builder rebalance
    • swift-init main start
    • swift-init rest start
    • chown -R swift.swift /etc/swift
    • swift -v -V 2.0 -A http://127.0.0.1:5000/v2.0/ -U service:swift -K swift stat
     ※以下の様なメッセージが出たらOK
     StorageURL: http://192.168.11.101:8080/v1/AUTH_74511892218d479c93ff1533970a8013
     Auth Token: f8bba3e67b464d0ca41e6735aa4358a1
        Account: AUTH_74511892218d479c93ff1533970a8013
     Containers: 0
        Objects: 0
          Bytes: 0
     Accept-Ranges: bytes
     X-Trans-Id: txcde473a4ccdb4773bad93cdd0561dac2


    3. OSイメージ作成
    3.1 サーバ側作業

    • cd
    • kvm-img create -f qcow2 server.img 5G
    ※proxy設定が必要な場合:export http_proxy=http://proxy:9999/
    • wget http://gb.releases.ubuntu.com//precise/ubuntu-12.04-server-amd64.iso
    • kvm -m 256 -cdrom ubuntu-12.04-server-amd64.iso -drive file=server.img,if=virtio,index=0 -boot d -net nic -net user -nographic -vnc :0

    3.2 PC側作業(UltraVNC)

    ※同じLANに繋がっているUltraVNCがインストールされたPCで以下の作業実施
    • スタート>すべてのプログラム>UltraVNC>UltraVNC Viewer
    • VNC Server: 192.168.11.101
    • Connectボタン
    ※インストール手順省略(適当に済ませる)
    ※再起動後ログインしsudo shutdown -h nowして停止させる
     →サーバ側のkvmコマンドが終了しているはず

    3.3 サーバ側作業

    ※サーバ上で以下のコマンドを実行
    • kvm -m 256 -drive file=server.img,if=virtio,index=0 -boot c -net nic -net user -nographic -vnc :0

    3.4 PC側作業(UltraVNC)

    ※同じLANに繋がっているUltraVNCがインストールされたPCで以下の作業実施
    • スタート>すべてのプログラム>UltraVNC>UltraVNC Viewer
    • VNC Server: 192.168.11.101
    • Connectボタン
    ※ログイン
    • sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules
    • (管理者パスワード)
    • sudo shutdown -h now

    3.5 サーバ側作業

    ※サーバ上で以下のコマンドを実行
    • glance add name="Ubuntu Server 12.04LTS" is_public=true container_format=ovf disk_format=qcow2 < server.img
    • ssh-keygen
    • cd .ssh
    • nova keypair-add --pub_key id_rsa.pub mykey
    • nova keypair-list
    • exit
    • exit


    4. OpenStack Dashboard上でインスタンス起動

    ※同じLANに繋がっているブラウザがインストールされたPCで以下の作業実施
    • ブラウザ起動(何でもよい)
    • http://192.168.11.101 を開く
    • ユーザ名admin、パスワードadminでログイン
    • Projectタブ
    • Images&Snapshotsタブ
    • "Ubuntu Server 12.04LTS"のLaunchボタン
    • Server Name は適当に入力
    • 「イメージを起動します。」ボタン
    ※起動するまで待つ
    • Instances&Volumesタブ
    • アクション>VNC Console
    ※コンソールが表示される

    以下、省略




    ほぼGuideどおりのインストールを実行すれば良い。

    インデックスのところとMySQLのlocalhostでのログインユーザの癖さえわかっておけば
    ほぼそのままだ。


    ..インストールモジュールが細かく分かれているので
    インストール構成が分散できるとはおもうが..
    逆にインストールを難しくしており、
    そのあたりはCloudStackのほうがよく整理できていた。
    インストール難易度はCloudStackのほうが上だったが..

    Horizon(ダッシュボード)のかっこ良さはCloudStackだが
    統計情報がCloudPortalなしで提供してくれそうな感じのUIだったので
    まあどっちともいえない。

    CloudStackはラック1~2本くらいの場合、
    OpenStackはより複雑な場合に使用するのだろうが、
    APIは統一させたいのでやはりどっちかを選ぶこととなる。


    keystoneが企業の統合認証に耐えられるレベルでかつ
    LDAPになっていて企業のWindows認証もおまかせ的であれば
    もうすこし使い道が広がるかもしれない。


    p.s.
    実はCloudStackインストール手順も記事にしているのだけど、
    PV数はOpenStackのほうが約2倍すこしたりないくらいで
    推移している。
     
    OpenStackのドキュメントは英語しか無いがほぼ一挙手一投足真似て
    ひっかかったところを丁寧につぶしていけば問題なくインストールできるのに対して、
    CloudStackは日本語マニュアルはあるとはいえいろいろちょこちょこやらないと
    インストール出来ない。

    それにCloudStackは日本人が好きなJavaだし、
    モジュール構成もインストールする側からするとCloudStackのほうがシンプルだし、
    管理コンソールのどっちかといえばあっちのほうがかっこいいのだけどなあ..

    世の中の関心はCloudStackではなく、
    OpenStackに向いているのかなあ..

    もうしばらくPVの伸びを観察してみようっと。

    2012年5月16日水曜日

    IBM Smart Cloud Entry(IBM Smarter kit for Cloud)の話を聞く



    IBM営業から話を聞いた。
    何かというと、簡単にいえば

    CloudStack + 申請・承認ワークフロー + 課金

    である。

    CloudStackを調べていたら
    そういう関連する情報もだんだん集まってくるようになった。
    いいのか悪いのか..


    価格は書けないが
    どこかのニュースサイトで
    Citrix CloudStackが25万/ソケットとあったが、
    それよりは安かった。


    ワークフローは
    ユーザがVMインスタンス作成すると
    承認者へ申請がとび
    きちんと承認を受けないとインスタンスが作れない。

    ワークフローは1段のみで
    承認者不在なら自動で別の承認者へエスカレーションしてくれたりという
    カスタマイズ機能はない。


    課金は
    あらかじめCPUやストレージなどの単価を登録しておいて、
    アカウント単位で合計金額を表示してくれる。

    アカウントというのはCloudStackでいうところの
    プロジェクトにあたる単位で
    アカウント単位で集計する。

    AWSにあるようなネットワーク使用料についての課金はできない
    予め決められたCPUやストレージ、メモリなどの単位でのみ
    課金できる。


    画面のカスタマイズは少しできるようだが
    基本標準構成で使用することを目的としているようだ。


    CloudStackを自社内で展開する場合も
    正直ワークフローと課金はほしいなあとおもって
    ソースを眺めていたのだけど、
    IBMはそのあたりをうまくついてきたわけだ。


    CloudStackより後だしじゃんけんだから
    機能はCloudStackにあってほしかった機能を少し加え
    価格は(製品版より)やや安めにしているところが
    まあ..うまい商売しているなあ..とおもう。



    IBMの旧10円クラウドのAPIも
    独自っぽい。
    標準化団体へ献上(?)しているらしいが、
    完全互換というわけではなさそうだ。

    このへんCloudStackやAWSと全く同じにすれば
    簡単にRightScale/enSTRATUSでハイブリッド化できるのにねえ..

    そこらへんは自社ブランドへ導出させるため
    絞っているようだ。


    ぶっちゃけ無料版CloudStackに課金とワークフロー機能
    つけてくれないものかねえ..

    CitorixとしてはCloudPortalもあるし
    やらないだろうなあ..






    にしても
    そろそろ仮想化に手を出せる企業は
    だいたい導入しきってきたところだから、
    大手ハードベンダは
    こぞってそろそろその次何を売るかで
    セルフポータルに目をつけだしているのは
    確かなようだ。



    p.s.
    CloudStackもそうだけど、
    みんなHyper-Vを完全に避けて通っているなあ;ーp

    ..だいじょうぶかな、MSは..

    2012年5月14日月曜日

    CloudStack3.0.2リリースされていた



    CloudStack3.0.0で格闘している間に
    3.0.2がもう出ていた...

    CloudStack3.0.2 ソースorバイナリ


    英語のドキュメントを読むと
    以下が主な変更点らしい。

    3.0.0から3.0.1の主な変更点
    ・GPL3.0からApacheライセンス2.0へ変わったことだけで
    ・Xen Server6.0.2サポート
    ・VMware vSphere v5.0サポート
    ・ガイドツアーの基本インストールにてXen Serverに加えKVMが正式にサポート
    ・Zone追加ウィザードが一部変更
    ・認証なしAPIポート(8096)がインストール直後使用不可(後で変更可能)
    ・新コマンドldapRemove追加(LDAPコンテキストの削除)
    ・その他リクエスト、レスポンスのフィールドが追加が多数

    3.0.1から3.0.2の主な変更点:
    ・VM構築時にのみDNS名から取得(後で変更可能)
    ・新コマンドchangeServiceForSystemVm追加




    VMwareを使ってなかったから
    気づかなかったけど、5.0に対応してなかったのか..
    結構まだ6にしてないところもおおいとおもうのだけど..

    ..知らなかった

    2012年5月10日木曜日

    Excel 2010で矢印ポインタにする方法が分からない


    ..多分こんなこと、みんな知っているかもしれませんが..
    なんか、絶対またわすれそうなので、自分のメモのためにも残しておこう。





    昔のExcelでは矢印アイコンがあって、
    オブジェクトの選択をする場合、
    このアイコンを押すと
    シート上でポインタが白十字ではなく矢印型になって
    オブジェクト選択できるようになった。


    でも、2010になってからUIかわってしまって
    どこにあるか、わからない..


    どうも
    [ホーム]タブ→[編集>検索と選択]→[オブジェクトの選択]
    と、めんどくさくなった..

    もう Excel なんて利用者むちゃくちゃ多いんだから、
    ユーザインターフェイス変えないでくれよ..


    まあ、
    そうしないと新しいバージョンんなんて誰も買ってくれなくなる
    気持ちはわからないでもないけど..


    p.s.
    2012/09/06
    自分のめもとして書いた記事ですが
    なぜか最近この記事のアクセスが増えてます。
    #たまにトップに踊り出ることも..

    2013はまだPreview Releaseも多分出てないと思うけど..

    ..最近何かあったっけ..

    2012年5月8日火曜日

    Ubuntu Server 12.04 LTS をインストールしたら画面が真っ黒のままになる

    GW明けに
    Ubuntu Server 12.04 LTS がリリースされていたので
    早速インストールしたら..

    インストールが終わり再起動が掛かったはいいけど..


    ..画面は真っ黒のまま..



    うーん、
    いろいろGoogleってみると

    Ubuntu 12.04 LTSをLoox U/B50Nに入れたらGMA500ドライバとの相性問題発生


    など、Intel GMA500でインストール直後
    起動しても真っ黒になるというブログ記事がちらほら..

    インストールしたPCは
    NVIDIA GeForce GT 220 なんだけどなあ..

    画面が真っ黒の状態で
    モニタの電源を何度か付け直したり
    Enterキーを売ったりしていたら
    復帰したので、
    上記の記事にある/etc/default/grubを編集してみて
    再起動したらログインコンソールが表示されるようになった。

    ちょっとこわいので
    Linux側のではなくNVIDIAのドライバを入れておいた。

    Xubuntu入れてみたら、
    ログイン画面はモニタ電源入れ直し1回は必要だった。


    しょうがない..
    もうしばらくこのままつかってみるかな..


    会社に入った時、
    先輩が
    この業界の初物には手を出すな
    と教えられていたっけ..


    【ハーネスエンジニアリングを始める前に】gpt-oss:20b の入出力データから、LLMの動作を理解する

      1. はじめに 最近は、 Cursor や Antigravity などのAIエージェント前提の統合開発環境や、 Claude Desktop や Codex アプリ などのPC上のオブジェクト操作が可能なデスクトップアプリ、 Open Claw といったPC全体の...