Using OCI360 to Audit Cloud Tenancy Data

Firstly, all credit goes to: https://github.com/dbarj/oci360 for this tool.

Currently, there is no official Oracle tool for generating reports of a Cloud Tenancy. This can leave generating data around estates as a manual task open to human error. This acts as a tool to produce these reports.

Free open-source framework/tool to generate html output of your tenancy metadata. Can act as an audit or analysis tool of estate. It is also customizable to create custom reports which could be used as a method of creating customized reports for various stakeholders depending on security requirements etc. Further information here.

This being a learning blog, I can give a nod to the experience i’ve gained on both Oracle Cloud Infrastructure and Linux throughout the process of using this product.

I carried out the following on an Oracle Linux VM on OCI.

Next up, there’s some pre-req’s for the tool:
JQ: wget -O jq https://github.com/stedolan/jq/releases/download/jq-1.5/<your version>
Which you’ll need to chmod to executable and put on to the path.
And
OCI-CLI: bash -c “$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)”

https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/cliconcepts.htm

Once setup, I followed through the process, which is detailed accurately in the github documentation, and had my report.

Some interesting aspects of the setup included:
– Creating a read only user with access to read across the whole tenency.
– Setting the MAX_STRING_SIZE of the Database to extended. In my case it meant the reporting was kept in a seperate PDB so not to unintentionally affect other PDB’s.

The tool is expanding too, the latest feature being the ability to compare some aspects of the two latest consecutive reports.

My next challenge is to automate the process to take place at intervals. I’m currently writing some shell scripts in order to do so. That’ll be my next blog post.

OCI Block Volume Backup and Further Linux Learning

OCI’s block volume option gives you a wide range of options when it comes to creating backup’s and restoring from them. It also gave me an excellent opportunity to learn about building, backing up and reattaching a restored block volume to a different instance – with a test included as proof.

The challenge:
1. Provision a VM and attach a block volume – running iSCSI commands to attach it.
2. Format the disk with two equal partitions
3. Make file system on one of these partitions
4. Mount the disk into a created directory
5. Edit the /etc/fstab folder
6. Spin up a seperate VM
7. Backup the block volume
8. Create a new block volume from the backup
9. Mount to the second VM
10. Confirm the backup is successfully attached through the test

How i’ll prove it:
Simply – i’ll create multiple simple text files after part 5.
Then once the backup is created in part 7 I’ll delete some selected files and will expect to see the full collection once the backed up block volume is attached to the second VM.

Creating the block volume requires only a few button clicks

For further, detailed information on carrying out these tasks please reference:
https://docs.cloud.oracle.com/en-us/iaas/Content/Block/Concepts/overview.htm
https://www.oracle.com/cloud/iaas/training/foundation.html

Details of provisioning a VM can be found here:
https://oracle-base.com/articles/vm/oracle-cloud-infrastructure-oci-create-a-compute-vm

Once the VM was in place the interesting tasks began to take place. Checking in the area is in place (the default area will be /dev). Along with this, the next step was to format the disk:

sudo fdisk starts a process on to format the disk. The default settings will format your disk into two paritions. Make sure to enter w for the last command in order to write.

Creating a file structure:

https://www.computerhope.com/unix/mkfs.htm

Please reference the above link for further info on file structures. Running the following command:

sudo mkfs -t <file structure type> <path to disk to create file structure>

Mounting the Disk:

sudo mount <directory to mount disk>

Finally, edit the fstab file to complete the process:

http://man7.org/linux/man-pages/man5/fstab.5.html

So, with all that done – could I prove the process had completed correctly? Try the process that I followed including a block volume backup to ensure you’ve carried out process correctly.

Using Knockout JS through OJET

Having spent some time away from developing UI’s in OJET but luckily spending time getting to grips with Javascript, i’ve been fortunate enough to revisit a topic that I struggled to grasp. Before discussing the topic my first comment is that i’ve gained a lot of enjoyment from returning to a once seemingly difficult area and having some success with it. As my journey of learning software development continues, It personally feels very satisfying achieve results such as this… long my it continue. (onto knockout.js).

A web framework for dynamic UI’s

So what is Knockout? It’s one of the stable, reliable libraries and frameworks OJET utilises (discuss further in my first post) to provide a basis for UI development.

Take a look at the key concepts of JS below:

So, what can be achieved with knockout?

Dynamic, One-page applications primarily. With the potential for feature-rich development, given the range of examples on the cookbook there’s a lot to go at.

Here’s a particular favourite aspect of the code – the use of $root. prefix. Which allows knockout.js to search the entire viewmodel for an object matching your input rather than just that codeblock.

Thanks for reading…

Introduce yourself to Linux with Oracle Always Free Account

Things have changed for me personally since the last post I shared with you. Work focus has shifted due to a change in project and I know find myself working on a lift and shift to cloud project where i’m also writing some backend stuff.

(As an early preview the next post i’ll write will be around Data Obfuscation…)

Off the back of this I have been forunate to have my first exposure to linux and personally it’s brilliant. From my own personal journey into IT it has been a fascinating insight and I feel as though its opened a huge door that i’m ready to explore. What i’m writing about here is the Oracle Always Free instance of a linux machine i’ve spun up to act as a playground.

https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/launchinginstance.htm

Creating the instance can take less then 5 minutes…

Following the link above, I put together my own instance. Some reading about the generating a putty-key and I was away to explore my way round a linux machine. More details below:

Highlights of my learning so far…

vi – vi, for those who don’t know, is a command you can execute that’ll allow you to edit a document within linux. Further to this, there’s another list of navigation commands through the keyboard setup for you to quickly manipulate the information in the file. Just copy and paste into text editor you say? It’s a quick to learn skill that’s rewarding to feel competent at.

pwd – moving over to navigating solely from the command line did take a few hours to get used to, but the best piece of advice I was given by a senior colleague was to check your present working directory – pwd.

These humble three key strokes have been crucial, you know where you’re operating from and have the security to write out your next command.

Finally, this is all well and good. But why would you learn to use linux machines? Personally, its captured my interest, but that isn’t enough for everyone. Take a look at these stats and you’ll struggle to argue that the knowledge gained on an OCI always free linux instance wont be a positive.

amazing….
Source: https://hostingtribunal.com/blog/linux-statistics/#gref

I plan to be back soon with some stuff around data masking and more OCI linux tales, probably a deeper dive into the learning of using Oracle on Linux….

Going solo….

So, after the previous posts around learning OJET as the junior role in an experienced team I’ve found myself with a less technically challenging task. However, it’s a task I need to find a solution for myself (an effective and stressful way to learn).

As mentioned previously, there is an internal project around a visitor management UI that i’m working on. It’s basic function is to manage visitors on a client site but it does have a twist, it will be paperless in order to be sustainable.

Having gained skills in UML writing this was the finished product

Before embarking on writing a line of code a UML document was needed, this was excellent from my perspective as it gave me an insight into producing a more rounded product and how clients expect use cases to be delivered. Additionally, during the process of writing out the UML it became clear that this process add values to the developers process, a clear, no waste diagram would make any future development more structured.

New Resources used over the past month…

So, going solo and writing UML’s might seem like a daunting challenge to those not well accustomed but in my opinion, the quality of resources at your disposal are key. To this end https://www.packtpub.com/ has been a huge source of high quality, in depth information.

Here, I’ve made use of the free daily book and now have a well stocked library concerning Javascript, HTML and UI design, amongst others. This recommendation is thanks to Phil Wilkins who’s blog can be found at https://blog.mp3monster.org/

So whats next?

Expect a more coding based update soon! I’ll be discussing some of the technical challenges and how my resources have helped my overcome them! Thanks for reading, get in touch if you’ve anything to add!

Further steps with OJET, doing the research and solving blockers

Picking up from where we last off, I promised some discussion around some of the more complex components in OJET. However, as you know i’m towards the beginning of my journey, especially with this tool, so some background work was required before diving into the ‘complex’ components the cookbook had to offer.

In terms of using the thematic map, some background knowledge of geoJSON was the first port of call. Getting my head around polygons and multi-polygons bore fruit later in the development process as we encountered an issue around placing markers on the map.

I’d recommend using this link to get yourself upto speed:
https://macwright.org/2015/03/23/geojson-second-bite.html

One of the many maps the cookbook provides, pre-built

So what was the problem? A multi-polygon for those who don’t know is exactly what it says; an area defined in JSON (JavaScript Object Notation ) made of more than one shape. We were placing ‘markers’ on the map, basically circles which would display information on-hover, and found that mapping the markers to a multi-polygon would result in the marker being displayed in the middle of the two shapes. Think a marker in France appearing in the middle of the Ocean between the mainland and a island territory.

Sunbursts can be an extremely efficient method of modelling data

Next up was sunbursts. Just looking at the component you can see a lot is happening. The main issue was, how do we pass dynamic data from an API call into a component along these lines effectively? We had to look at the oj-event. To cut a long story short, we decided (and this was with help from more senior colleagues) to first log the event and have a look what was happening. From the long ream of information logged to the console we were able to pick out specific aspects of clicks on certain areas of the chart and have them pass information onto the next relevant step. A learning curve indeed.

That’s all for now, but i’ll update my progress again soon – this time revisiting an internal project that’s taken on a far greater, and interesting, scope.

Featured

Getting started with UI development through Oracle JET.

An introduction to myself:

To give this blog some context, I intend this blog to be an insight into how I learn the different technologies I’ll be in contact with at my business unit at Capgemini, ERP Cloud Solutions. As a degree apprentice developer in the team the posts should have a technical focus and that’s about as specific as I can be at this point. Fair to say I’m just as interested to see where this goes as anyone else.

Preamble:

Oracle JavaScript Extension Toolkit is an opensource framework for building UI’s and with a couple of my team already well established in using the technology this is where I started my journey….

OJET Logo

How did using OJET benefit?

Oracle JET has been an excellent tool to get involved with and most of its strongest features have benefitted my own personal journey throughout. Firstly, the manner JET has selected its libraries (open source, reliable, stable AND widely known) has been exactly what I’ve needed at this point of my development. Along with this, the forums and community around the product are well maintained and you can expect a well-informed reply within a short period of time, another excellent resource I’ve been happy to draw upon. This without mentioning what I believe is the most useful tool for any potential UI developer who would want to use JET, the Cookbook (link below). The cookbook gives a huge number of ready-made components that’re fully customisable and available for use, these components found themselves inside some of my teams own custom built components too, so there’s no concern around a lack of flexibility.

creating custom components became simple

The task at hand:

To begin with I formed part of a small team tasked with producing a ‘visitor sign in’ UI the type often seen in office receptions. After setting up OJET locally and using the navbar template, one of the four templates OJET has loaded, in order to make use of the routing, single page application features in the product we set about building the UI. It’s fair to say it was a learning curve. Firstly, I had to build up a familiarity with the libraries in use, particularly knockout JS.

http://learn.knockoutjs.com/#/?tutorial=intro

I found this tutorial clear and concise and the multiple visits to the site to see what else I could use made it a good learning experience and aided my productivity.

creating projects with the pre-built templates is also useful

Overall, I was reasonably happy with the finished product. The UI was simple in design and as a team we made reasonable progress given the short time frame given. What will be interesting is now I have the chance to revisit that project how many of the new features (and I’m beginning to see most UI’s have scope for expansion) added in the mean time will come to fruition as planned.

Overview of JET Architecture

So whats next?
Once the work on the Visitor sign in was completed I moved into a more complex UI which took full advantage of the previously mentioned cookbook:
https://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html
In the next blog post i’ll talk about how the long list of data visualisations where put to good effect and the new set of skills I needed in order to capitalise on them.