Inicio rápido en Ubuntu 14.04

Inicio rápido en Ubuntu 14.04

Durante meses he estado luchando por encontrar el mejor flujo de trabajo para crear y probar mis libros de cocina de AWS Opsworks localmente antes de pasar a Opsworks.

Después de muchos intentos estancados, encontré una publicación de blog de Mike Greiling y desde entonces me decidí por un entorno que funciona bien para mí. Me gustaría compartir la instalación/configuración porque hay muchas piezas en movimiento.

Animo a cualquiera que tenga sus propios entornos de construcción/prueba para chef,que están específicamente orientados a libros de cocina de opsworks, para publicar también respuestas aquí - ¡¡gracias!!.

Respuesta1

Recomiendo ALTAMENTE a todos que consulten la publicación del blog de Mike Greiling.Simplifique el desarrollo de OpsWorks con Packery su repositorio de githubopsworks-vm que le ayudan a simular toda la pila de opsworks, incluida la instalación del agente de opsworkspor lo que también puedes probar recetas de implementación de aplicaciones, múltiples capas, múltiples instancias al mismo tiempo, etc. Es extremadamente impresionante.

He incluido toda la configuración necesaria para preparar su entorno antes de usar la compilación Packer Virtualbox de Mike Greiling.

Inicio rápido en Ubuntu 14.04

NOTA: Esto NO se puede hacer desde una máquina virtual ubuntu porque virtualbox no admite la virtualización anidada de máquinas de 64 bits.

  1. InstalarChefDK
    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. InstalarVirtualBox
    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. InstalarVagabundo
    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. InstalarEnvasador
    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. Construye Mike Greilingopsworks-vmimagen de caja virtual usando Packer
    1. mkdir ~/packer && cd ~/packer
    2. git clone https://github.com/pixelcog/opsworks-vm.git
    3. cd opsworks-vm
    4. rake build install
    5. Esto instalará una nueva máquina virtual virtualbox en ~/.vagrant.d/boxes/ubuntu1404-opsworks/

Para burlarse de una única instancia de opsworks, cree un nuevo Vagrantfile así:

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

La dna.jsonruta del archivo se establece en relación con Vagrantfile y debe contener cualquier dato JSON que desee enviar a OpsWorks Chef.

Por ejemplo:

{
  "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]"
    ]
  }
}

Para simular múltiples instancias de opsworks e incluir capas, consulte suEjemplo de introducción a AWS OpsWorksque incluye elpila.jsonabajo.

Vagrantfile (para múltiples instancias)

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

pila.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"
    }
  }
}

Para aquellos que no están familiarizados con vagrant, simplemente hagan un vagrant uppara iniciar la(s) instancia(s). Luego, puede modificar su libro de cocina localmente y cualquier cambio se puede aplicar volviendo a ejecutar chef en las instancias existentes con vagrant provision. Puede hacer un vagrant destroyy vagrant uppara comenzar desde cero.

información relacionada