- "site.yml" file
- playbook containing
- "roles" that will be applied to individual host groups / "hosts"
- how the hosts will be accessed
- and by what user to run as
- Puppet equivalent is "nodes.pp"
- "hosts" file
- use real/local DNS hostname to define which hosts are in which hostgroups
- example: webserver1, webserver2, haproxy1, haproxy2, mongo1, mongo2
- some variables like "port" can be added too
- "group-vars" directory
- key/value pairs to use when generating output from template files
- files named identically to hostgroup names defined in "hosts" file
- these are more in-line in Puppet, and less controllable/flexible
- "roles" directory
- Puppet equivalents are "modules"/"classes"
- directories arbitrarily named to match "roles" in site.yml
- e.g. "tomcat", "common", "mongod"
- "templates" directory
- files with variables that are resolved using "group-vars" key/values
- moved on to target systems using task keyword "template"
- same name is used in Puppet
- "files"
- raw files to be moved into place on the target filesystems
- used by tasks with keyword "file"
- same name used in Puppet
- "handlers"
- "main.yml"
- control system services on target systems
- "service" keyword
- "state", e.g. "restarted"
- in Puppet, these are not broken out from other "resources"
- "tasks"
- this is the core list of actions to perform on target systems
- Puppet equivalents are "includes"/"classes", maybe "modules" as well
- "main.yml"
- collection of tasks
- uses yml structure
- "name" is arbitrary reference for developers
- ansible keyword to perform some action on the system
- ansible keywords: "file", "template", "command"
- puppet equivalents are called "resources"
- conditionals/dependencies: "when", "notify", "wait_for"
Showing posts with label howto. Show all posts
Showing posts with label howto. Show all posts
Thursday, 5 April 2018
Basic Ansible in 10 mins
Tuesday, 24 January 2017
Docker: simple example, fast
See github link for instructions on how to run.
See: https://github.com/pcleddy/mini001
docker-compose.yml
version: '2'
services:
app:
build:
context: ./
dockerfile: app.docker
ports:
- "80:80"
app.docker
FROM silintl/ubuntu:16.04 RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections RUN apt-get update RUN apt-get install -y apache2 WORKDIR /var/www/humankind RUN echo " \n\\n\ ServerName humankind \n\ DocumentRoot /var/www/humankind \n\ \n\ " >> /etc/apache2/sites-available/humankind.conf RUN a2dissite 000-default.conf && a2ensite humankind.conf RUN echo "Automation for the People" > /var/www/humankind/index.html EXPOSE 80 CMD ["apache2ctl", "-D", "FOREGROUND"]
See: https://github.com/pcleddy/mini001
Thursday, 29 December 2016
simple angularjs 1.x webapp
Here's a very simple app using AngularJS 1.x.
Hints:
Code: https://github.com/pcleddy/wordcounter
Live app: http://bit.ly/2iiEuoY (I hope)
Maybe try to play with app.js to see if you can add some functionality using m_words.
Hints:
- Ignore how the first couple of lines in app.js work, and just use as is.
- Anything in index.html that starts with "ng-" is a "angular directive", fancy term for a placeholder. Angular repeatly scans the DOM for these, gulps them up and runs them. Sometimes it is just a div, sometimes the whole body. You decide how much of the DOM a directive needs to control. Try to keep it as small as possible.
Code: https://github.com/pcleddy/wordcounter
Live app: http://bit.ly/2iiEuoY (I hope)
Maybe try to play with app.js to see if you can add some functionality using m_words.
Wednesday, 23 April 2014
gnupg
- create
- gpg --gen-key
- if entropy taking too long
- sudo apt-get install rng-tools
- note your key ID from output
- pub 4096R/B110C232 2014-04-23
- here it is: B110C232
- push
- gpg --send-keys --keyserver keyserver.ubuntu.com B110C232
- replace B110C232 with the key ID output from above
- more to come
Monday, 13 May 2013
Put stuff on your Nexus 4
- apt-get install gmtp
- Make sure your "Storage" is in MTP mode
P.S. Or, if you have access to a Mac: "Android File Transfer"
Sunday, 3 February 2013
Fix jEdit fonts for MacBook Pro with Retina display
From: https://bugs.eclipse.org/bugs/show_bug.cgi?id=382972#c4
Assumptions: jEdit was installed into /Applications directory.
- Close any running jEdit
- Edit /Applications/jEdit.app/Contents/Info.plist
- At end of file, add the top two lines below above the bottom two lines, and save
- Drag jEdit to desktop
- Start jEdit and see if fonts fixed
- If fixed, drag jEdit back to /Applications, and retest.
<key>NSHighResolutionCapable</key>
<true/>
</dict>
</plist>
Thursday, 3 January 2013
Quick start how-to graphite base install on Debian
UPDATE: Also see Latest Graphite on Amazon Linux at AWS.
This only gets graphite working on your local Linux box. Left to user to translate to remote server installation thereafter.
NOTE: Do everything as root user
This only gets graphite working on your local Linux box. Left to user to translate to remote server installation thereafter.
NOTE: Do everything as root user
- make sure apache2 is installed and working with wsgi
- apt-get install apache2 -y
- apt-get install libapache2-mod-wsgi -y
- a2enmod wsgi
- wsgi needs a place for its sockets
- mkdir /etc/apache2/run
- mkdir /var/run/wsgi
- chmod 777 /etc/apache2/run /var/run/wsgi
- this seems undocumented, thanks!
- Install dependencies
- apt-get install -y libapache2-mod-wsgi python-twisted python-memcache python-pysqlite2 python-simplejson
- apt-get install -y python2.6 python-pip python-cairo python-django python-django-tagging
- Install graphite elements
- mkdir -p /root/graphite-install
- cd /root/graphite-install
- git clone https://github.com/graphite-project/graphite-web.git
- git clone https://github.com/graphite-project/carbon.git
- git clone https://github.com/graphite-project/whisper.git
- git clone https://github.com/graphite-project/ceres
- cd /root/graphite-install/whisper
- git checkout 0.9.x
- python setup.py install
- cd /root/graphite-install/ceres
- python setup.py install
- cd /root/graphite-install/carbon
- git checkout 0.9.x
- python setup.py install
- cd /root/graphite-install/graphite-web
- git checkout 0.9.x
- python check-dependencies.py
- fix any missing dependencies
- ignore warnings if certain you don't need a feature
- python setup.py install
- Setup configuration files and permissions
- cp -v /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf
- cp -v /opt/graphite/conf/storage-schemas.conf.example /opt/graphite/conf/storage-schemas.conf
- Create Django database
- cp -v /opt/graphite/webapp/graphite/local_settings.py.example /opt/graphite/webapp/graphite/local_settings.py
- Edit this file by uncommenting the entire DATABASES section
- Otherwise next commands may fail with bizarre error
- cd /opt/graphite/webapp/graphite
- python manage.py syncdb
- Make sure NO errors
- Create a user/pass you'll never forget
- chown -Rv www-data:www-data /opt/graphite/storage/
- EXTREMELY IMPORTANT
- Apache
- Add below Apache configuration as a virtual host (details not covered here)
- Or do this and struggle to make it work
- cp -v /opt/graphite/examples/example-graphite-vhost.conf /etc/apache2/sites-available/graphite
- Every "directory" and "location" in the virtual hosts file need these entries, or you'll get permission denied errors
- apache versions before 2.4
- Order deny,allow
- Allow from all
- apache versions 2.4 and after
- Require all granted
- a2ensite graphite
- cp -v /opt/graphite/conf/graphite.wsgi.example /opt/graphite/conf/graphite.wsgi
- apache2ctl -S
- Check all is OK
- service apache2 stop
- service apache2 start
- If you have trouble check permissions under this directory and/or run this again
- chown -Rv www-data:www-data /opt/graphite/storage/
- Seems some files are created by root that should be created by www-data user maybe
- Start carbon daemon
- cd /opt/graphite
- /opt/graphite/bin/carbon-cache.py start
- verify with:
- lsof -nP -i :2003
- TASK: automate this to start on reboot somehow
- Add to /etc/hosts
- 127.0.1.3 graphite
- tail -F /opt/graphite/storage/log/webapp/error.log
- python /opt/graphite/examples/example-client.py
- Hit http://graphite
- Should show initial graphite interface
- View results
- Click down into "system" -> loadavg_5min
- Find "Select Recent Data" icon in upper-left toolbar
- Set to 10 mins
- You should see lines appearing as script runs and feed data to Graphite via Carbon
- Check out giraffe once you get some stats to shove in it
- https://github.com/kenhub/giraffe
- Just dump the files you get from the git clone into a directory under you default Apache install and tweedle with dashboard.js until you see something
- Try this a few times on the CLI of your graphite server every few minutes
- echo "system.logs.changed_last10 `find /var/log -mmin -10 | wc -l` `date +%s`" | nc -w 1 localhost 2003
- Try similar commands to pass in other stats
- echo must output a single integer.
WSGISocketPrefix /var/run/wsgi
<VirtualHost *:80>
ServerName graphite
DocumentRoot "/opt/graphite/webapp"
ErrorLog /opt/graphite/storage/log/webapp/error.log
CustomLog /opt/graphite/storage/log/webapp/access.log common
WSGIDaemonProcess graphite processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120
WSGIProcessGroup graphite
WSGIApplicationGroup %{GLOBAL}
WSGIImportScript /opt/graphite/conf/graphite.wsgi process-group=graphite application-group=%{GLOBAL}
WSGIScriptAlias / /opt/graphite/conf/graphite.wsgi
Alias /content/ /opt/graphite/webapp/content/
<Location "/content/">
SetHandler None
</Location>
Alias /media/ "@DJANGO_ROOT@/contrib/admin/media/"
<Location "/media/">
SetHandler None
</Location>
<Directory /opt/graphite/conf/>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
Subscribe to:
Posts (Atom)
Interview questions: 2020-12
Terraform provider vs provisioner Load balancing Network Load Balancer vs Application Load Balancer Networking Layer 1 vs Layer 4 haproxy u...
-
CRITICAL: AWS now offers internal VPC DNS! Below is no longer necessary AFAIK. Woo hoo! http://aws.amazon.com/about-aws/whats-new/2014/...
-
build sudo apt-get install git gcc sudo apt-get install automake autoconf git clone git://github.com/rriley/tsunami-udp.git cd tsunam...
-
From: https://bugs.eclipse.org/bugs/show_bug.cgi?id=382972#c4 Assumptions: jEdit was installed into /Applications directory. Close any...