Kushal Das

FOSS and life. Kushal Das talks here.

kushal76uaid62oup5774umh654scnu5dwzh4u2534qxhcbi4wbab3ad.onion

Fedora 22 release event in Pune

As I said in my blog post about FUDCon, we wanted to continue the effort on reaching to new contributors. The Fedora 22 release event was the start. Last Saturday, on 1st August we had the event in the Red Hat Pune office. Around 17 people attended the event.

We had the bi-weekly Fedora-APAC meeting on IRC from 9:30am, that is why most of the existing Fedora contributors reached early to join that meeting. After that we started our event around 10:45am with a welcome message.

What are the changes in Fedora 22 for workstation? Praveen Kumar started giving answer to that question. He also talked about the upcoming changes in Fedora 23 release.

Parag Namade took the stage after Praveen, he talked about packaging applications for Fedora Project. Two main things he pointed out are package naming guidelines, and packaging guidelines. He also talked about the new package review process. The second part of his talk was about FESCo.

I spoke next, before and after lunch. About both Fedora Server, and Fedora Cloud. I reused my slides from the Fedora Council meeting for the same.

What do you want to do for Fedora Project? Are you interested in any particular technology? Siddhesh Poyarekar asked these two questions to all participants first. He noted down the answers on white board, and slowly went through them. Bug zapping was the primary interest for many.

Priyanka Nag did a live blog post on the event.

We will continue with more events of similar kind, but more technically focused ones.

Testing systemd-networkd based Fedora 22 AMI(s)

Few days back I wrote about a locally built Fedora 22 image which has systemd-networkd handling the network configuration. You can test that image locally on your system, or on an Openstack Cloud. In case you want to test the same on AWS, we now have two AMI(s) for the same, one in the us-west-1, and the other in ap-southeast-1. Details about the AMI(s) are below:

</tr>
<tr>
      <td>us-west-1</td>
      <td>fedora22-networkd</td>
      <td>ami-c9e21e8d</td>
      <td>HVM</td>
</tr> 
Region AMI Name AMI ID Virtualization
ap-southeast-1 fedora22-networkd ami-e89895ba HVM

Start an instance from these images, and login. In case you want to use some different DNS settings, feel free to remove /etc/resolv.conf link, and put up a normal /etc/resolv.conf file with the content you want.

hdparm output from banana pi server

The question

Why did I chose a Banana pi server instead of a simple home desktop working as a storage box? This question was not only in my mind, but many of my friends asked me too.

Normally a desktop will give better performance than this ARM SOC, but that also includes more space, and money. I wanted to see how good/bad is this one compared to a desktop box I use as server (located somewhere in USA). I chose to use hdparm command to do simple testing, where I can make sense of the output.

Test on Banana Pi

[root@localhost ~]# hdparm -t /dev/sda1

/dev/sda1:
 Timing buffered disk reads: 268 MB in  3.01 seconds =  89.05 MB/sec
[root@localhost ~]# hdparm -T /dev/sda1

/dev/sda1:
 Timing cached reads:   772 MB in  2.00 seconds = 385.52 MB/sec

Test on my desktop server

[root@fedora-build ~]# hdparm -t /dev/sda1

/dev/sda1:
 Timing buffered disk reads: 434 MB in  3.01 seconds = 144.37 MB/sec
[root@fedora-build ~]# hdparm -T /dev/sda1

/dev/sda1:
 Timing cached reads:   22548 MB in  2.00 seconds = 11284.87 MB/sec

Is it too slow?

Maybe in many use cases, but not for my own backup needs.

Event report: FUDCon Pune 2015

Starting of the conversation

I don't remember when I called Siddhesh for the first time to talk about organising FUDCon in India this year. But the discussion started, at first I wanted to bid with Durgapur as the venue. But after some discussion, we agreed that Pune is a better place in many cases which we want in a venue for FUDCon.

The bid and venue

I was in Kolkata, I was not directly involved with the bid. But the team did an amazing job in putting up the bid, doing many ground works. MITCoE was chosen as the venue, but we had few other college names in the list as backup.

Talk selection and website

Four of us (Siddhesh, Amit, Nipendra, and me) took the charge of selecting talks. After many long calls/videos chats we had the initial selected talk list, and it got published in the site on time. That reminds me to speak about the effort Siddhesh put up to fix our fudcon.in, I know how many sleepless nights he spent to get everything working as required.

Final ground work before event

I came down to Pune on 26th of May, and start working with rest of the organisers. My primary responsibility was related to final travel for the speakers/contributors, and doing the travel for the day of the events. Sanisoft helped us with the event schedule. Hasgeek stepped up to help with the video recording/streaming of the event.

Suprith came up as a volunteer, and he did a tremendous job while running around through out city, and getting best quotes for swag, and printing. Another super big help came from Rupali, who handled/worked on almost everything other than talk selection, and made sure that the event becomes a success

I spent two sleepless nights just before the event starts to make sure all speakers reach the hotel on time, and safely.

The event

Dennis Gilmore

Dennis Gilmore started the event with his keynote. We learned a lot about the future plans of Fedora release engineering team in that. After that we had the education panel with a opening event from the college authority.

Harish did the closing keynote on day one. Jiri did the opening keynote on day two. As you can see I am only talking about the keynotes as I was running around doing smaller tasks during the event. We also had Fedora Ambassadors APAC meeting during FUDCon.

Tenzin Chokden

The day two closing keynote was from Tenzin Chokden about the Tibetan Government and community in exile and how it safeguarded itself with help of open source tools and the Fedora community from the spying network called GhostNet. This was eye opening in different ways, showing the problems they face everyday, and about how the small contributions from the FOSS communities help them in bigger ways.

Day three was full with workshops and specialized groups. I gave a small 10 minutes talk about CentOS Cloud SIG in the Openstack track. Harish conducted an amazing workshop as GPG.

My job finished when the last speaker returned home safely. But this is not the end, we will be doing local event as follow ups to try to get more open source contributors. I was very happy to see many students who traveled more than one day to reach Pune for the event. If they continue their journey in the community, I am sure they will shine in their own career path.

Students from Amrita University

You can view the full photo set here.

Thank you volunteers

I don't have words to praise the volunteers for the amount of work they put up for the conference. I can only say thank you all for everything. Just want to mention Siddhesh specifically. The community needs more leaders like you. I hope many will follow your path.

New home storage box with Fedora and ARM

Buying the hardware

I was looking forward to setup a new storage box at home. The biggest two points were about being able to run Fedora, and to be in the cheaper side. After looking at the available hardware prices for the desktops, I thought I should look into something else.

While asking about the similar setups, Dennis Gilmore, and Peter Robinson from Fedora release engineering team suggested me to look at the ARM boards which can run the standard Fedora ARM. After looking into the boards which I can buy online from an Indian shop, I decided to go for a Banana Pi. It has Allwinner A20, 1GB DDR DRAM, and most important a SATA connector. I ordered the device from crazypi, I have bought many other things from them before. The device was delivered within 24 hours :)

The next issue was to get the hard drive for the system. After a few failed attempts to find a power cable for a SATA drive, I just decided to buy a desktop SMPS to power the hard drive (and it will power the future ones too), I also bought a 8 port switch as I was out of available ports in my home network.

The setup

OS installation

I downloaded the minimal Fedora ARM image (find it here). On my laptop first I installed fedora-arm-installer package. Used the same to get the image on a SD card

# dnf install fedora-arm-installer
# fedora-arm-image-installer --image=Fedora-Minimal-armhfp-22-3-sda.raw.xz --target=Bananapi --media=/dev/sdb --selinux=OFF

After everything was done, I reinserted the card in my laptop, and then edited the file extlinux.conf under boot partition, added the words console=tty0 as a parameter.

Network configuration

Next step was to connect the Banana Pi to a TV (it has HDMI), and boot the system, setup root password, timezone, and another user. After logging into the system, my next job was to setup a static ip for the system. To do so, add a new file /etc/sysconfig/network-scripts/ifcfg-eth0 and put the following (after changing the ip details) into it.

DEVICE="eth0"
BOOTPROTO="static"
OBBOOT="yes"
TYPE="ETHERNET"
IPADDR="192.168.1.250"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
DNS="8.8.8.8"

Brought back the system to my office room, setup the network switch, and the cables. Connected the system along with the hard drive, and I managed to connect to system from my laptop using ssh.

Setting up the SATA drive

The drive came up as /dev/sda in the system. I wanted to encrypt it first, that will keep the data secured in case it gets stolen. Install the following package for the same.

# dnf install cryptsetup

Then wanted to fill up the drive with some random data (this will take some time).

# dd if=/dev/urandom of=/dev/sda1 bs=1M

Then encrypted the drive.

# cryptsetup luksFormat /dev/sda1

WARNING!
========
This will overwrite data on /dev/sda1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: 
Verify passphrase:

Next step is to open it with a given name (the name will come up under /dev/mapper), and format the partition as ext4.

[root@localhost ~]# cryptsetup luksOpen /dev/sda1 store1
Enter passphrase for /dev/sda1: 
[root@localhost ~]# 
[root@localhost ~]# ls /dev/mapper/
control  store1
[root@localhost ~]# mkfs.ext4 /dev/mapper/store1 
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 244189878 4k blocks and 61054976 inodes
Filesystem UUID: 43a8b791-3fac-43cb-8244-8988ff3fb749
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
102400000, 214990848

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

Now I do not want the drive to be automounted, that is why I added a script which will open it, and mount to /mnt in the future.

Software configuration

I tried to use Owncloud for some time on that box, it is an excellent application, but sadly mariadb was taking a lot of CPU. Later at night Dennis suggested me rdiff-backup. I am using that for now, I will update the post later with my experience.

Testing Fedora Cloud image with systemd-networkd

One of the change proposal I have submitted for Fedora 23 is about having systemd-netowrkd for network configuration. You can find the change page here. Instead of carrying the old network-scripts, we wanted to move to networkd, which is a part of systemd. Couple of the notable benefits are about how it will help us to keep the image size sane by not bringing in any external dependencies, and also about similarity between many different distribution based cloud images from users' point of view. You can look into the discussions on the Talk page, and the trac ticket.

In the last week's cloud meeting we decided to have a build of Fedora 22 cloud image with systemd-networkd on it. I made the required changes, and did the local build. You can download the qcow2 image, remember it is 218MB. You can use it in any cloud environment in a normal way. If you want to learn, and play around with the configurations, you may want to read this page. Please try the image and tell us what do you think in the comments section of this post.

FUDCon feedback from bijra school

DSCF0020

Kaji Nizamuddin is the headmaster of Bijra High School, he gave a talk in FUDCon Pune about the usage on FOSS and Fedora in his school. I am publishing his feedback email in my blog which he sent after the event.

Dear Convenor FUDCON 2015(Pune)

A very warm and sincere good wishes to all the members of the FUDCON team . I express my deepest gratitude and sincere thanks for sponsoring my trip as a speaker not only from the point of warm hospitality and respect that you have showered upon me but also from the point of useful lessons I learnt from the various sessions that I joined during the three days of conference. It was a novel experience in my life to share my views with a galaxy of stalwarts who are so technologically well advanced and updated. Hopefully all these technological improvements that have been earmarked will not only benefit the advancement of education but also they will be utilised for human welfare as a whole. The members of FUDCON fraternity conducted the conference in such a well planned and well organised manner that a beautiful environment of learning was created. The question - answer sessions have been so rewarding. The students of MIT and other colleges who came to take part in the conference had a tete-a-tete with the national and international speakers and I think this mutual response has made the purpose of this conference more meaningful and significant. I personally feel that our FEDORA contributors who work with yearlong lucubration for the cause of Free and Open Source Software have a very broad outlook, magnanimity and a cosmopolitan heart. They are really the men and women of vision.It was rather a lifetime event for me to witness and cherish the memory of the persons who work under the global FEDORA umbrella and to share their views with each other. I came back with enough enlightenment and zeal. Therefore I wish to contribute more into such projects. I do confess here that I am not so well -versed with the technical aspects of all these projects but I swear I will keep myself abreast in the development . Hence I need your guidance and help to update myself. Once again all FUDCON 2015 members for being so kind and treating me in such a special way. I felt honoured and privileged and hope that the next FUDCON will be as successful and as rewarding as this one . Wishing you all the best. With sincere regards and warm wishes.

KAZI NIZAMUDDIN

CentOS Cloud SIG update

For the last few months we are working on the Cloud Special Interest Group in the CentOS project. The goal of this SIG is to provide the basic guidelines and infrastructure required of FOSS cloud infrastructure projects so that we can build and maintain the packages inside official CentOS repositories.

We have regular meetings at 1500 UTC in every Thursday on #centos-devel IRC channel. You can find the last week's meeting log here. RDO (Openstack), Opennebula and Eucalyptus were the first few projects to come ahead, and participate in forming the SIG. We also have a good number of overlap with the Fedora Cloud SIG.

RDO is almost ready to do a formal release of Kilo on CentOS 7. The packages are in testing phase. Opennebula team has started the process to get the required packages built on CBS.

If you want to help feel free to join in the #centos-devel channel, and give us a shout. We do need more helping hands to package, and maintain various FOSS Cloud platforms.

There are also two GSoC projects under CentOS which are related to the Cloud SIG. The first one is "Cloud in a box", and the second one is "Lightweight Cloud Instance Contextualization Tool". Rich Bowen, and Haikel Guemar are the respective mentors for the projects.

Tunir, a simple CI with less pain

One of my job requirement is to keep testing the latest Fedora cloud images. We have a list of tests from Fedora QA team. But the biggest problem is that I don't like doing these manually. I was looking for a way to run these automatically. We can do this by the normal CI systems, but there are two problems in that.

  • Most CI systems cannot handle cloud images, unless there is a real cloud running somewhere.
  • Maintaining the CI system & the cloud is a pain in my standard.

Tunir came out as a solution to these problems. It is a simple system, which can run predefined set of commands in a fresh cloud instance, or in a remote system. Btw, did I mention that you don't need a cloud to run these cloud instances in your local system? This is possible thanks to the code from Mike Ruckman.

Each job in Tunir requires two files, jobname.json and jobname.txt. The json file contains the details of the Cloud image (if any), or the remote system details, ram required for the vm etc. The .txt file contains the shell commands to run in the system. For now it has two unique commands for Tunir. You can write @@ in front of any command to mark that this command will return non zero exit code. We also have a SLEEP NUMBER_OF_SECONDS option, we use it when we reboot the system, and want Tunir to wait before executing the next command.

Tunir has a stateless mode, I use that all the time :) In stateless mode, it will not save the results in any database. It will directly print the result in the terminal.

$ tunir --job fedora --stateless

Tunir uses redis to store some configuration information, like available ports. Remember to execute createports.py to fill the configuration with available ports.

You can install Tunir using pip, a review request is also up for Fedora. If you are on Fedora 21, you can just test with my package.

I am currently using unittest for the Cloud testcases, they are available at my github. You can use fedora.json and fedora.txt from the same repo to execute the tests. Example of tests running inside Tunir is below (I am using this in the Fedora Cloud tests).

curl -O https://kushal.fedorapeople.org/tunirtests.tar.gz
tar -xzvf tunirtests.tar.gz
python -m unittest tunirtests.cloudtests
sudo systemctl stop crond.service
@@ sudo systemctl disable crond.service
@@ sudo reboot
SLEEP 30
sudo python -m unittest tunirtests.cloudservice.TestServiceManipulation
@@ sudo reboot
SLEEP 30
sudo python -m unittest tunirtests.cloudservice.TestServiceAfter

UPDATE: Adding the output from Tunir for test mentioned above.

sudo ./tunir --job fedora --stateless
[sudo] password for kdas: 
Got port: 2229
cleaning and creating dirs...
Creating meta-data...
downloading new image...
Local downloads will be stored in /tmp/tmpZrnJsA.
Downloading file:///home/Fedora-Cloud-Base-20141203-21.x86_64.qcow2 (158443520 bytes)
Succeeded at downloading Fedora-Cloud-Base-20141203-21.x86_64.qcow2
download: /boot/vmlinuz-3.17.4-301.fc21.x86_64 -> ./vmlinuz-3.17.4-301.fc21.x86_64
download: /boot/initramfs-3.17.4-301.fc21.x86_64.img -> ./initramfs-3.17.4-301.fc21.x86_64.img
/usr/bin/qemu-kvm -m 2048 -drive file=/tmp/tmpZrnJsA/Fedora-Cloud-Base-20141203-21.x86_64.qcow2,if=virtio -drive file=/tmp/tmpZrnJsA/seed.img,if=virtio -redir tcp:2229::22 -kernel /tmp/tmpZrnJsA/vmlinuz-3.17.4-301.fc21.x86_64 -initrd /tmp/tmpZrnJsA/initramfs-3.17.4-301.fc21.x86_64.img -append root=/dev/vda1 ro ds=nocloud-net -nographic
Successfully booted your local cloud image!
PID: 11880
Starting a stateless job.
Executing command: curl -O https://kushal.fedorapeople.org/tunirtests.tar.gz
Executing command: tar -xzvf tunirtests.tar.gz
Executing command: python -m unittest tunirtests.cloudtests
Executing command: sudo systemctl stop crond.service
Executing command: @@ sudo systemctl disable crond.service
Executing command: @@ sudo reboot
Sleeping for 30.
Executing command: sudo python -m unittest tunirtests.cloudservice.TestServiceManipulation
Executing command: @@ sudo reboot
Sleeping for 30.
Executing command: sudo python -m unittest tunirtests.cloudservice.TestServiceAfter


Job status: True


command: curl -O https://kushal.fedorapeople.org/tunirtests.tar.gz
status: True

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8019  100  8019    0     0   4222      0  0:00:01  0:00:01 --:--:--  4224



command: tar -xzvf tunirtests.tar.gz
status: True

tunirtests/
tunirtests/cloudservice.py
tunirtests/LICENSE
tunirtests/testutils.py
tunirtests/__init__.py
tunirtests/cloudtests.py



command: python -m unittest tunirtests.cloudtests
status: True

.suu
----------------------------------------------------------------------
Ran 4 tests in 0.036s

OK (skipped=1, unexpected successes=2)



command: sudo systemctl stop crond.service
status: True




command: @@ sudo systemctl disable crond.service
status: True

Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.



command: @@ sudo reboot
status: True




command: sudo python -m unittest tunirtests.cloudservice.TestServiceManipulation
status: True

.
----------------------------------------------------------------------
Ran 1 test in 0.282s

OK



command: sudo python -m unittest tunirtests.cloudservice.TestServiceAfter
status: True

.
----------------------------------------------------------------------
Ran 1 test in 0.070s

OK

What is a hackathon or hackfest? Few more tips for proposals

According to Wikipedia, A hackathon (also known as a hack day, hackfest or codefest) is an event in which computer programmers and others involved in software development, including graphic designers, interface designers and project managers, collaborate intensively on software projects. Let us go through few points from this definition.

  • it is an event about collaboration.
  • it involves not only programmers, but designers, docs and other people.
  • it is about software projects.

We can also see that people work intensively on the projects. It can be one project, or people can work as teams on different projects. In Fedora land, the most common example of hackathon is "Fedora Activity Days" or FADs. Where a group of contributors sit together in a place and work on the project intensively. The last example is the Design FAD which we had around a month back, where the design team worked on fixing the their goals and workflows and other related things.

One should keep these things in mind while submitting a proposal for FUDCON or actually any other conference. If you want to teach about any particular technology or tool, you should put that as a workshop proposal than a hackfest or hackathon.

Then which one is a good topic for hackfest during Fudcon? Say you want to work on the speed up of the boot time of Fedora. You may want to design 5 great icons for the projects you love. If you love photography, may be you want to build a camera using a RaspberryPi and some nice Python code. Another good option is to ask for a list of bugs from the applications under Fedora apps/infrastructure/releng team and then work on fixing them during the conference.

In both hackfest or workshop proposals, there are a few points which must be present in your proposal. Things like

  • Who are the target audience for the workshop?
  • what version of Fedora must they have in their laptops?
  • which all packages should they pre-install in their computer before coming to the conference?
  • Do they need to know any particular technology or programming language or tool to take part in the workshop or hackfest?
  • Make sure that you submit proposals about the projects where you do contribute upstream.

CFP is open still 9th March, so go ahead and submit awesome proposals.