# pip install docker.py
Collecting docker.py
/usr/local/lib/python2.7/dist-packages/pip-8.1.2-py2.7.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning.
SNIMissingWarning
/usr/local/lib/python2.7/dist-packages/pip-8.1.2-py2.7.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insec
#### SESSION #### | |
vagrant@workstation:~/chef-repo$ knife bootstrap ${ADDRESS} -V --sudo --ssh-user ${USER} --node-name ${NODE_NAME} --run-list ${RUN_LIST} | |
INFO: Using configuration from /home/vagrant/chef-repo/.chef/knife.rb | |
Doing old-style registration with the validation key at /home/vagrant/chef-repo/.chef/vagrantdev-validator.pem... | |
Delete your validation key in order to use your user credentials instead | |
Connecting to node |
vagrant@workstation:~/chef-repo$ knife bootstrap ${ADDRESS} -V --sudo --ssh-user ${USER} --node-name ${NODE_NAME} --run-list ${RUN_LIST} | |
INFO: Using configuration from /home/vagrant/chef-repo/.chef/knife.rb | |
Doing old-style registration with the validation key at /home/vagrant/chef-repo/.chef/vagrantdev-validator.pem... | |
Delete your validation key in order to use your user credentials instead | |
Connecting to node | |
node -----> Existing Chef installation detected | |
node Starting the first Chef Client run... | |
node Starting Chef Client, version 12.5.1 | |
node resolving cookbooks for run list: ["awesome_customers_ubuntu"] |
INFO global: Vagrant version: 1.8.7 | |
INFO global: Ruby version: 2.2.5 | |
INFO global: RubyGems version: 2.4.5.1 | |
INFO global: VAGRANT_OLD_ENV__system_type="Darwin" | |
INFO global: VAGRANT_OLD_ENV_OLDPWD="/Users/joaquin/projarea/sysadmin-exp" | |
INFO global: VAGRANT_OLD_ENV_LSCOLORS="GxFxCxDxBxegedabagaced" | |
INFO global: VAGRANT_OLD_ENV_rvm_prefix="/Users/joaquin" | |
INFO global: VAGRANT_OLD_ENV_SHLVL="1" | |
INFO global: VAGRANT_OLD_ENV_GEM_PATH="/Users/joaquin/.rvm/gems/ruby-2.3.0:/Users/joaquin/.rvm/gems/ruby-2.3.0@global" | |
INFO global: VAGRANT_OLD_ENV_IRBRC="/Users/joaquin/.rvm/rubies/ruby-2.3.0/.irbrc" |
TCL-Expect scripts are an amazingly easy way to script out laborious tasks in the shell when you need to be interactive with the console. Think of them as a "macro" or way to programmaticly step through a process you would run by hand. They are similar to shell scripts but utilize the .tcl
extension and a different #!
call.
The first step, similar to writing a bash script, is to tell the script what it's executing under. For expect
we use the following:
#!/usr/bin/expect
FROM node:6.10 | |
RUN apt-get update -qq && \ | |
DEBIAN_FRONTEND=noninteractive apt-get -y upgrade && \ | |
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* | |
ENV APP_ROOT /usr/src/app | |
RUN mkdir -p $APP_ROOT && \ | |
groupadd -r appuser -g 451 && \ | |
useradd -u 451 -r -g appuser -d $APP_ROOT -s /sbin/nologin -c "Docker image user" appuser && \ |
{% for key, val in envvars.iteritems() %} | |
export {{ key }}='{{ val }}' | |
{% endfor %} |
by Joaquin Menchaca Last Update: Nov 2017
Updated versions maintained here:
This is my guide to getting essential tools for DevOps on Mac OS X.
These are different methods that I have developed to rapidly learn technology.
Understand the business case as to what problem trying to solve and how you are trying to solve it. Ultimately in business, problems are usually tied to lowering the time and money of some goal, and a particular application or DevOps tool will help in dimensions.
Any particular solution in DevOps also incorporates a particular philosophy and thus embeds processes into the tool or system. This is important to understand. It is vital to not to be deep into the weeds of any particular implementation specifics, or else you won't be able to see the concepts behind the tool and the business problem that is trying to be understood.