From the diary of an automation sysengineer role

8:32 – Hurry for warm-up call

I started the day cleaning snow and ice off from the windows of my Mondeo. The
only problem was that I only have had 28 minutes before our MySQL warm-up
conference call. A conference call where some of my colleagues and me should
have had to share desktops presenting generic overview about our MySQL
environment to Nils, to our new MySQL specialist advisor. So handfree
bluetooth phone connection from the car wouldn’t have been enough. I decided
to optimize my available resources and started the engine and turned the
defroster of the car on. While getting out from the car I switched on the GPS
receiver on my smartphone. Waze app can be very useful during the Budapest
rush hours in the morning. I managed removing ice with a simple plasctic
scraper form the four side windows. The front and rear windows were melting by
the defroster threads, only a small assistance was required before windshield
wipers started to wipe. I jumped in, switched the seat heating – holy winter
package – and called my colleague, Gabor who developed the Puppet modules of
the MySQL cluster and will participate in the call. Just ringing, no answer.
Ok, Waze estimated 8:57 as arrival time. Gabor called me back in 5 minutes so
he would have facilitated the first few minutes. He called me again that Nils
is in traffic jam, we can start with 30 minutes delay. Unbelievable. I arrived
into the underground parking lot on time 8:54. 3 minutes on the upstairs and
my laptop was docked and started at 9:01.

Used tools:
The social navigation app Waze on Android smartphone with GPS
Bluetooth car kit
Ice scarper

9:29 – Warm-up call

4 colleagues were participated in the call. After Gabor, Nils and me, the 4th
mate was Balazs. The Cisco Webex was used. Screen shared via browser, voice spreaded over phone
call. We started going through the elements of the MySQL Cluster. NDB-Cluster engine
is used, the nodes can be divided into three types: data node, management node
and sql node.

Puppet modules:

$ ls -ld xxx_platform_profile_mysql_*

drwxr-xr-x+ 1 xxx Domain Users 0 Jan 12 15:46 xxx_platform_profile_mysql_ndb_dn
drwxr-xr-x+ 1 xxx Domain Users 0 Jan 12 15:46 xxx_platform_profile_mysql_ndb_mgmt
drwxr-xr-x+ 1 xxx Domain Users 0 Jan 12 15:46 xxx_platform_profile_mysql_ndb_sql

The templates subdirectories contain skeletons for the final files e.g.
mycnf.erb. Puppet generates the my.cnf from the mycnf.erb and the different
variables are getting values from the params.pp file in the manifests
directory. The hiera call queries the a file level database in the Puppet
infrastructure and can be configured on the master nodes of Puppet.

xxx_platform_profile_mysql_ndb_dn/manifests/params.pp:

class xxx_platform_profile_mysql_ndb_dn::params {
$members_mgmt = hiera(‘xxx_platform_profile_ndb_cluster::nodes::mgmt’)
$cluster_version = “7.3.4-1.el6”
$cluster_pkg_name = “MySQL-Cluster-server-gpl”
$cluster_shared_pkg_name = “MySQL-Cluster-shared-compat-gpl”
$dn_datadir = hiera(‘xxx_platform_profile_ndb_cluster::dn_datadir’, ‘/usr/local/mysql/data’)

validate_string($cluster_version)
validate_string($cluster_pkg_name)
validate_string($cluster_shared_pkg_name)
validate_array($members_mgmt)
validate_string($dn_datadir)

$dn_datadir_array = dirtree($dn_datadir)
validate_array($dn_datadir_array)
}

We discussed the documentation, the actual questions, tasks and the next steps. We
can say that the communication sometimes can cause difficulties in
multinational environment, but more or less we can agree the common goals.

Compress the puppet moduls for code review:
$ tar -czvf mysql_ndb_puppet_modules.tgz `ls -d xxx_platform_profile_mysql_*`

Used tools:
– Cisco Webex
– bash and Cygwin on Windows 7
– git
– Gepetto the Puppet derivative of Eclipse IDE
– Confluence and Jira

10:58 – Daily Scrum

We use the Scrum framework for product management and as general development
practice. The Daily Scrum generally is a 15 minutes long call for our
development team. We discussed our activities and forcasted a work plan for
the next day or days. The development team summarized the work since the last
Daily Scrum and estimated the work that could be done before the next call tomorrow.
Our Development Team uses the Daily Scrum to check progress toward the Sprint Goal and to inspect how progress is trending toward completing the work in the Sprint Backlog.
The Daily Scrum optimizes the probability that the Development Team will meet the Sprint Goal. Every day, the Development Team should understand how it intends to work together as a self-organizing team to accomplish the Sprint Goal and create the anticipated Increment by the end of the Sprint. The Development Team or team members often meet immediately after the Daily Scrum for detailed discussions, or to adapt, or replan, the rest of the Sprint’s work.

Used tools:
-Cisco Webex
-Jira

11:40 – Lunch with my BOSS

We discussed general options about our career developement. We talked about
the last years, about the results and about the future oportunities. I
emphasized that I’m continuosly trying find the best option from the different
alternative solutions.

12:20 – Developement and magic in git

In the Jira ticketing system are recorded the different issues, bugs and
general request which are belonging to the specific Scrum sprints. Jira
contains the backlog which is the basis of our product developement.
My current tasks are MySQL security requirements related development requests.
Each sub-tasks can be sorted into 3 main categories according to the implementation approach:

  • sql statement or query: The results of the query have to be parsed and make
    actions if required.
    option one: install time AND one time only check via hiera.yaml(gpg).
    Simple sql command can be used.
    option two: continuous or periodical audit by puppet. The sql query
    have to be called and the its results have to be parsed interpretively e.g.
    from or by bash
  • start_option: MySQL initial start script have to be called with additional
    arguments or can be defined on config file level.
    sub-category: if a forbidden start_option should be checked can result some complexity
  • puppet permission checks and modifications for files and dirs.

Switch to development branch:
$ git checkout development
Switched to branch ‘devel’

Create a new branch from development:
$ git checkout -b feature-jiraticket-sec_req_01
Switched to a new branch ‘vmi’

$ git branch
development
* feature-jiraticket-sec_req_01
master

Development in progress. Parameter added to the config template.

Config template staged:
$ git add ./templates/mycnf.erb

$ git commit
JIRA-XXX_sec_rec_01 Implementation of security requirements 01
– parameter added to the config template

“.git/COMMIT_EDITMSG” 9 lines, 301 characters written
[feature-jiraticket-sec_req_01 58e670f] JIRA-XXX_sec_rec_01 Implementation of security requirements 01 – parameter added to the config template
1 file changed, 1 insertion(+)

Push to remote repo:
$ git push

Used tools:
-Jira
-Gepetto
-git

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s