In March 2012 I wrote a blog titled, GPS Information in photos. In it I describe how to extract and resolve Exif GPS data to a map reference. Recently I wrote an update to that blog that included how to clear metadata from an image. Essentially, the two methods I would use are:
(1) Using ImageMagick with
convert gps.jpg -strip stripped.jpg
This appears to re-compress the JPEG image which may not be what you want.
(2) So, there is an alternative tool such as the exiv2 utility.
I've not used this myself, but it seems to have great command line options.
Here are technical notes on various subjects. This helps me to remember how to solve specific problems, and I hope it helps others too ...
Tuesday, 27 September 2016
Friday, 16 September 2016
Automation with Ansible
Ansible is a Python based automation tool. I started using it to revert changes made on my local machine every time there were package updates. That is I wanted to ensure my options and settings were preserved. Professionally my team uses Puppet but we were looking at alternatives. Ansible was chosen for a variety of reasons: it is easy to learn, has broad functionality and an active community. There is next to no new lingo to learn:
The example above is just a subset of roles from my project to manage my local machine. You can see the full project on GitHub. There are now over 100 tasks being performed by this project. This grew incrementally, where each role could be developed independently from the others. Thats is, Ansible makes it easy for you to start small, and little by little, add functionality.
- a task is an action you want to perform
- a list of tasks can be organised into a playbook
- handlers are special tasks that are triggered by a change in a task
- a group of playbooks is organised into roles
- an inventory is a list of hosts (or group of hosts) to apply a playbook to
- playbooks are under the roles directory
- tasks are stored in the tasks directory, under a role
- variables are stored in the vars directory, under a role
- templates are stored in templates directory, under a role
├── group_vars │ └── all ├── host_vars └── roles ├── menu │ ├── handlers │ └── tasks ├── vim │ ├── files │ ├── handlers │ ├── tasks │ └── vars └── x11
The example above is just a subset of roles from my project to manage my local machine. You can see the full project on GitHub. There are now over 100 tasks being performed by this project. This grew incrementally, where each role could be developed independently from the others. Thats is, Ansible makes it easy for you to start small, and little by little, add functionality.
I recommend that you get to know the included core modules. If you find yourself invoking many command or shell tasks, then you probably need to re-read the list of modules or explore writing a custom module. Ansible works best when break a complex task into single action steps. Doing this has the added benefit of making it easy for you to test tasks as they are included. Re-running a role is natural as Ansible is idempotent. Of course, you can easily break this if invoking a shell script. Which is another reason to break down a complex operation into distinct tasks and use the provided modules.
Despite having written the original project to manage my home machine, this project (by virtue of hosts and groups) now manages other machines as well.
So, if you find yourself repeating tasks on multiple hosts, why not give Ansible a try?
See also my presentation (PDF) on Ansible Filters.
Despite having written the original project to manage my home machine, this project (by virtue of hosts and groups) now manages other machines as well.
So, if you find yourself repeating tasks on multiple hosts, why not give Ansible a try?
See also my presentation (PDF) on Ansible Filters.
Tuesday, 6 September 2016
Converting MS Documents to PDF using LibreOffice
I've been a long time user of LibreOffice. I first started with StarOffice, before moving to OpenOffice, and finally the latest incarnation, LibreOffice. While I use office suites less, preferring Wiki's and if a versioned document is required, LaTeX, I still on occasion receive MS documents. Rather than reading these documents in MS-Word or MS-PowerPoint formats I prefer to convert to a PDF. Here is how to do that. The following shows how to convert a presentation to a PDF. It is a headless operation that works just as well over a set of documents.
loimpress --headless --convert-to pdf presentation.pptxSimilarly,
lowriter --headless --convert-to pdf document.doc
Subscribe to:
Posts (Atom)