Recently I started to read about building development environments with virtualization software (I am a beginner) and it seems that 'infrastructure as a code' is a really powerful concept.
I really like the workflow structure described <a href="http://blog.csanchez.org/2014/02/20/security-testing-using-infrastructure-as-code/">here</a>:
<ol>
<li>The same base VirtualBox image is used around the team</li>
<li>Vagrant is used to quickly 'build up' and 'provision' such an image to a needed configuration with the help of</li>
<li>Chef (or Puppet) recipes which is the only piece of code needed to be put under version control.</li>
</ol>
However, I still do not quite understand how the code is transferred and deployed on Production servers.
As I understand, the common way of keeping DEV and PROD environments identical is to manage the Production server instance as just another virtual image to be provisioned with Chef. I can have exactly the same OS installed on the Production server as I (and the team) use daily with VirtualBox-Vagrant-Chef.
But the Production server can have hardware which differs from that in the virtual guest OS and this might lead to inconsistencies again.
<strong>So, here is the question:</strong>
What is the known and common best practice to transfer and deploy code to a Production server from a development environment which is managed with the VirtualBox-Vagrant-Chef toolchain? Does this practice allow any continuous deployment?
[Edit]: Note: Is there any practice of running the same VM instance provisioned with Chef/Vagrant on the Production server, like it is depicted on this <a href="http://thebpmfreak.wordpress.com/2012/10/20/introduction-to-vagrant/">diagram</a>?
I really like the workflow structure described <a href="http://blog.csanchez.org/2014/02/20/security-testing-using-infrastructure-as-code/">here</a>:
<ol>
<li>The same base VirtualBox image is used around the team</li>
<li>Vagrant is used to quickly 'build up' and 'provision' such an image to a needed configuration with the help of</li>
<li>Chef (or Puppet) recipes which is the only piece of code needed to be put under version control.</li>
</ol>
However, I still do not quite understand how the code is transferred and deployed on Production servers.
As I understand, the common way of keeping DEV and PROD environments identical is to manage the Production server instance as just another virtual image to be provisioned with Chef. I can have exactly the same OS installed on the Production server as I (and the team) use daily with VirtualBox-Vagrant-Chef.
But the Production server can have hardware which differs from that in the virtual guest OS and this might lead to inconsistencies again.
<strong>So, here is the question:</strong>
What is the known and common best practice to transfer and deploy code to a Production server from a development environment which is managed with the VirtualBox-Vagrant-Chef toolchain? Does this practice allow any continuous deployment?
[Edit]: Note: Is there any practice of running the same VM instance provisioned with Chef/Vagrant on the Production server, like it is depicted on this <a href="http://thebpmfreak.wordpress.com/2012/10/20/introduction-to-vagrant/">diagram</a>?