Ubuntu 14.04 快速入門

Ubuntu 14.04 快速入門

幾個月來,我一直在努力尋找最佳工作流程,在推送到 opsworks 之前在本地建置和測試我的 aws opsworks 說明書。

經過多次停滯不前的嘗試後,我找到了 Mike Greiling 的一篇部落格文章,並從此確定了一個適合我的環境。我想分享設定/配置,因為有很多移動部件。

我鼓勵任何擁有自己的廚師建立/測試環境的人,專門針對 Opsworks 食譜,也在這裡發布答案——謝謝!

答案1

我強烈建議大家去看看 Mike Greiling 的部落格文章使用 Packer 簡化 OpsWorks 開發和他的 github 倉庫opsworks-vm 它可以幫助您模擬整個 opsworks 堆疊,包括 opsworks 代理的安裝因此您還可以測試應用程式部署配方、多層、同時多個實例等。

我已經包含了在使用 Mike Greiling 的 Packer Virtualbox 建置之前準備環境所需的所有設定。

Ubuntu 14.04 快速入門

注意:這不能從 ubuntu 虛擬機器完成,因為 virtualbox 不支援 64 位元電腦的巢狀虛擬化。

  1. 安裝廚師DK
    1. mkdir /tmp/packages && cd /tmp/packages
    2. wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chefdk_0.8.1-1_amd64.deb
    3. sudo dpkg -i chefdk_0.8.0-1_amd64.deb
    4. cd /opt/chefdk/
    5. chef verify
    6. which ruby
    7. echo 'eval "$(chef shell-init bash)"' >> ~/.bash_profile && source ~/.bash_profile
  2. 安裝虛擬盒子
    1. echo 'deb http://download.virtualbox.org/virtualbox/debian vivid contrib' > /etc/apt/sources.list.d/virtualbox.list
    2. wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
    3. sudo apt-get update -qqy
    4. sudo apt-get install virtualbox-5.0 dkms
  3. 安裝流浪漢
    1. cd /tmp/packages
    2. wget https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.4_x86_64.deb
    3. sudo dpkg -i vagrant_1.7.4_x86_64.deb
    4. vagrant plugin install vagrant-berkshelf
    5. vagrant plugin install vagrant-omnibus
    6. vagrant plugin list
  4. 安裝包裝機
    1. mkdir /opt/packer && cd /opt/packer
    2. wget https://dl.bintray.com/mitchellh/packer/packer_0.8.6_linux_amd64.zip
    3. unzip packer_0.8.6_linux_amd64.zip
    4. echo 'PATH=$PATH:/opt/packer' >> ~/.bash_profile && source ~/.bash_profile
  5. 建造邁克·格雷林的opsworks-vm使用 Packer 的 virtualbox 鏡像
    1. mkdir ~/packer && cd ~/packer
    2. git clone https://github.com/pixelcog/opsworks-vm.git
    3. cd opsworks-vm
    4. rake build install
    5. 這會將新的 virtualbox 虛擬機器安裝到 ~/.vagrant.d/boxes/ubuntu1404-opsworks/

若要模擬單一 opsworks 實例,請建立一個新的 Vagrantfile,如下所示:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu1404-opsworks"
  config.vm.provision :opsworks, type: 'shell', args: 'path/to/dna.json'
end

檔案dna.json路徑是相對於 Vagrantfile 設定的,並且應包含您希望傳送至 OpsWorks Chef 的任何 JSON 資料。

例如:

{
  "deploy": {
    "my-app": {
      "application_type": "php",
      "scm": {
        "scm_type": "git",
        "repository": "path/to/my-app"
      }
    }
  },
  "opsworks_custom_cookbooks": {
    "enabled": true,
    "scm": {
      "repository": "path/to/my-cookbooks"
    },
    "recipes": [
      "recipe[opsworks_initial_setup]",
      "recipe[dependencies]",
      "recipe[mod_php5_apache2]",
      "recipe[deploy::default]",
      "recipe[deploy::php]",
      "recipe[my_custom_cookbook::configure]"
    ]
  }
}

若要模擬多個 opsworks 實例並包含層,請參閱他的AWS OpsWorks「入門」範例其中包括堆疊.json以下。

Vagrantfile(適用於多個實例)

Vagrant.configure("2") do |config|

  config.vm.box = "ubuntu1404-opsworks"

  # Create the php-app layer
  config.vm.define "app" do |layer|

    layer.vm.provision "opsworks", type:"shell", args:[
      'ops/dna/stack.json',
      'ops/dna/php-app.json'
    ]

    # Forward port 80 so we can see our work
    layer.vm.network "forwarded_port", guest: 80, host: 8080
    layer.vm.network "private_network", ip: "10.10.10.10"
  end

  # Create the db-master layer
  config.vm.define "db" do |layer|

    layer.vm.provision "opsworks", type:"shell", args:[
      'ops/dna/stack.json',
      'ops/dna/db-master.json'
    ]

    layer.vm.network "private_network", ip: "10.10.10.20"
  end
end

堆疊.json

{
  "opsworks": {
    "layers": {
      "php-app": {
        "instances": {
          "php-app1": {"private-ip": "10.10.10.10"}
        }
      },
      "db-master": {
        "instances": {
          "db-master1": {"private-ip": "10.10.10.20"}
        }
      }
    }
  },
  "deploy": {
    "simple-php": {
      "application_type": "php",
      "document_root": "web",
      "scm": {
        "scm_type": "git",
        "repository": "dev/simple-php"
      },
      "memcached": {},
      "database": {
        "host": "10.10.10.20",
        "database": "simple-php",
        "username": "root",
        "password": "correcthorsebatterystaple",
        "reconnect": true
      }
    }
  },
  "mysql": {
    "server_root_password": "correcthorsebatterystaple",
    "tunable": {"innodb_buffer_pool_size": "256M"}
  },
  "opsworks_custom_cookbooks": {
    "enabled": true,
    "scm": {
      "repository": "ops/cookbooks"
    }
  }
}

對於不熟悉 vagrant 的人,您只需執行 avagrant up即可啟動實例。然後,您可以在本地修改您的食譜,並且可以透過對現有實例重新執行 Chef 來應用任何更改,vagrant provision. 您可以執行 avagrant destroyvagrant up從頭開始。

相關內容