custom rpms - red hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-rhlug.pdf ·...
TRANSCRIPT
![Page 1: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/1.jpg)
For system configuration
Tim KlemzPresented by
Unix Admin(RHCE), Lifetouch Inc.
Twin Cities Red Hat User Group :: Q3/2013
Custom RPMs
![Page 2: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/2.jpg)
Preface
1. I still have lots to learn about RPM creation!
2. RPM's, not unlike scripting, get better with each iteration
3. Lots of resources available – Fedora spec files for examples, RH Summit past presentations..
4. RPMs are a good stepping stone to puppet configuration management
![Page 3: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/3.jpg)
Today's Topics
1.Really quick RPM primer
2. Why should I use RPM's?
3. Example use cases
4. Breakdown of one of our sample system configuration RPMs
5. Things we've Learned along the way..
![Page 4: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/4.jpg)
●RPM Quick Primer
![Page 5: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/5.jpg)
Create rpmbuild user / group (do not build as root)
install rpm package on build server
RPM Quick Primer
# mkdir -p /opt/rpmbuild/rpm/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
Create rpm directory structure
# yum -y install rpm
![Page 6: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/6.jpg)
Create structure/files for RPM you are making
RPM Quick Primer
# cd ~/rpm/SOURCES# tar cvzf helloworld-1.0.tar.gz helloworld-1.0/
Create the tar.gz of the SOURCE
# mkdir -p ~/rpm/SOURCES/helloworld-1.0/var# echo “hello world” > ~/rpm/SOURCES/helloworld-1.0/var/helloworld.txt
![Page 7: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/7.jpg)
Create simple spec file to deploy /var/helloworld.txt
RPM Quick Primer
Name: helloworldVersion: 1.0Release: 1Summary: Places the helloworld.txt file into /var/License: ProprietaryBuildArch: noarchSource0: %{name}-%{version}.tar.gz%installrm -rf $RPM_BUILD_ROOT <---------existsmkdir -p $RPM_BUILD_ROOT <-------------------Addcp -R * $RPM_BUILD_ROOT <---------------------Add%files/var <----path that the file will end up in once installed
# cd ~/rpm/SPECS# vim helloworld.spec
![Page 8: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/8.jpg)
Build rpm
RPM Quick Primer
# rpmbuild -bb helloworld.spec
Once completed, you now have an RPM named helloworld-1.0.noarch.rpm in ~/rpm/RPMS/noarch/, that deploys the /var/helloworld.txt when installed
![Page 9: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/9.jpg)
●Why Should I Use RPM's?
![Page 10: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/10.jpg)
Couldn't configurations be done by post install Satellite snippets?
What if you are already using configuration management tool (puppet, chef, RH Satellite)?
Why RPMs?
![Page 11: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/11.jpg)
Kickstart(Satellite) Snippets are only done on build
What if there is a change you wish to make to your snippet? How do you apply that the already deployed systems?
What happens is somebody changes a configuration file?
Why RPMs?
![Page 12: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/12.jpg)
It's true, configuration management tools can accomplish these same things, but...
Although many benefits exist when using a mature configuration management tool... who is at this point?
Handle deliberate local configuration changes?
RPM's could bridge the gap, and help with logic to later convert tasks to puppet, chef etc...
Why RPMs?
![Page 13: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/13.jpg)
Can be installed during a kickstart
Can be installed anytime afterwords
Can be updated and applied when needed
Can setup to address deliberate local configuration changes
Why RPMs?
![Page 14: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/14.jpg)
RPM Use Cases
![Page 15: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/15.jpg)
Biggest use case, Oracle database server builds!
Standardized application server builds
Reduce build time & hand over servers quicker to end users
Handle all configuration changes and server specific application installs in a single “prep” rpm
RPM Use Cases
![Page 16: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/16.jpg)
Handle Configuration of system builds
User and access configuration
Additional applications required (Many requirements for Oracle DB systems!)
Application specific kernel parameters
Ulimit settings
When user access changes, RPM can be updated and applied with a simple “yum -y update”
RPM Use Cases
![Page 17: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/17.jpg)
Example RPM
![Page 18: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/18.jpg)
These examples are used to prepare almost all system builds
Files to be deployed exist in tarball for RPM in the SOURCES directory
We are utilizing RHDS(ldap) for our user management and access control, but proxy/role accounts are local
Example RPM
![Page 19: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/19.jpg)
What We've Learned
![Page 20: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/20.jpg)
Be careful with the “%un” sections in spec file!
RPM's are not shell scripts, don't treat them that way
Make sure your logic is sound
Only use “Requires” for packages that your RPM truly require to operate
What We've Learned
![Page 21: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/21.jpg)
Knowing the order of steps for an RPM package update/upgrade is imperative
First installs upgrade RPM, then uninstalls original
This has major implications!
Uninstall directives in spec file are not just used when uninstalling (ie removing) an RPM package
%postun says remove oracle user? Upgrade will run and last step will be remove oracle user
Overall last steps taken are the “%un” sections from the package you are updating!
What We've Learned
![Page 22: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/22.jpg)
When doing “yum update”, order of steps seems like the wrong order(shown on previous slide). This really impacts doing updates when there are commands in the %un sections
DO NOT REMOVE A USER IN AN %un SECTION!
What We've Learned
![Page 23: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/23.jpg)
Initial RPM's we were making were performing all sorts of seds / echos as if it was a shell script
No benefit to use RPM if doing this
Difficult if not impossible to upgrade
Not able to easily return to previous state when removing the package
What We've Learned
![Page 24: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/24.jpg)
Ensure your logic is sound!
If there is a mistake in your RPM (especially uninstall sections) you can't fix it once the RPM is installed.
Solid logic ensures RPM installs/upgrades and removes without scary error messages
Test your RPM for multiple scenarios before rolling it out (install, update, removal)
What We've Learned
![Page 25: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/25.jpg)
RPMs can be beneficial when used to perform system configurations
Extremely helpful when not (yet) using a configuration management tool
When combined with Kickstart, it can makes server setup a breeze
Summary
![Page 26: Custom RPMs - Red Hatpeople.redhat.com/mskinner/rhug/q3.2013/rpm-presentation-RHLUG.pdf · Today's Topics 1.Really quick RPM primer 2. Why should I use RPM's? 3. Example use cases](https://reader031.vdocuments.us/reader031/viewer/2022030502/5aae80437f8b9a07498c33b8/html5/thumbnails/26.jpg)
http://www.redhat.com/promo/summit/2010/presentations/summit/opensource-for-it-leaders/thurs/pwaterma-2-rpm/RPM-ifying-System-Configurations.pdf
http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/index.html
Resources