<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mike Renfro's Blog &#187; Linux/Unix</title>
	<atom:link href="http://blogs.cae.tntech.edu/mwr/category/linuxunix/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.cae.tntech.edu/mwr</link>
	<description>A partial repository of whatever comes to mind</description>
	<lastBuildDate>Sat, 31 Oct 2009 23:02:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Setting up Project Quotas under XFS in Debian GNU/Linux</title>
		<link>http://blogs.cae.tntech.edu/mwr/2009/09/01/setting-up-project-quotas-under-xfs-in-debian-gnulinux/</link>
		<comments>http://blogs.cae.tntech.edu/mwr/2009/09/01/setting-up-project-quotas-under-xfs-in-debian-gnulinux/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 15:45:37 +0000</pubDate>
		<dc:creator>Mike Renfro</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux/Unix]]></category>

		<guid isPermaLink="false">http://blogs.cae.tntech.edu/mwr/?p=119</guid>
		<description><![CDATA[Quick and dirty notes for getting XFS project quotas running: I&#8217;m working on making storage areas for various capstone design class groups, vehicle teams, etc. I&#8217;d like to ensure that they don&#8217;t take an excessive amount of storage, too. These instructions are slightly different than what I&#8217;d found elsewhere, and I&#8217;m hoping to have someone [...]]]></description>
			<content:encoded><![CDATA[<p>Quick and dirty notes for getting XFS project quotas running: I&#8217;m working on making storage areas for various capstone design class groups, vehicle teams, etc. I&#8217;d like to ensure that they don&#8217;t take an excessive amount of storage, too. These instructions are slightly different than what I&#8217;d found elsewhere, and I&#8217;m hoping to have someone confirm that what I&#8217;m doing is correct and update the appropriate man pages accordingly.</p>
<p>So assuming we have a project for ME4444, group 3 (I already had projects defined for groups 1 and 2 from earlier tests):</p>
<pre># grep /home /etc/fstab
/dev/md1000/home        /home   xfs     defaults,usrquota,prjquota      0      1
# echo "me4444-03:/home/projects/me4444-03" &gt;&gt; /etc/projects
# echo "me4444-03:3" &gt;&gt; /etc/projid
# mkdir /home/projects/me4444-03
# xfs_quota -x -c "project -s me4444-03"
Setting up project me4444-03 (path /home/projects/me4444-03)...
Processed 1 /etc/projects paths for project me4444-03
# xfs_quota -x -c "limit -p bsoft=5g bhard=10g me4444-03"
# xfs_quota -x -c "report -p"
Project quota on /home (/dev/md1000/home)
                               Blocks
Project ID       Used       Soft       Hard    Warn/Grace
---------- --------------------------------------------------
me4444-01           0          0    1048576     00 [--------]
me4444-02           0    5242880   10485760     00 [--------]
me4444-03           0    5242880   10485760     00 [--------]</pre>
<p>Now group 3 has a 5 GB &#8220;soft&#8221; quota, can exceed that for up to 7 days at a time, but can never exceed their 10 GB &#8220;hard&#8221; quota. All that&#8217;s left is setting up directory permissions and Samba configuration so that the authorized users can store things there.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.cae.tntech.edu/mwr/2009/09/01/setting-up-project-quotas-under-xfs-in-debian-gnulinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Giving a Presentation at the Tennessee Higher Education IT Symposium</title>
		<link>http://blogs.cae.tntech.edu/mwr/2008/04/22/giving-a-presentation-at-the-tennessee-higher-education-it-symposium/</link>
		<comments>http://blogs.cae.tntech.edu/mwr/2008/04/22/giving-a-presentation-at-the-tennessee-higher-education-it-symposium/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 11:57:15 +0000</pubDate>
		<dc:creator>Mike Renfro</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[infrastructures]]></category>
		<category><![CDATA[puppet]]></category>

		<guid isPermaLink="false">http://blogs.cae.tntech.edu/mwr/2008/04/22/giving-a-presentation-at-the-tennessee-higher-education-it-symposium/</guid>
		<description><![CDATA[I&#8217;m heading to the IT Symposium this morning to give a talk on creating a managed Unix infrastructure from scratch, somewhat of a summary of several things I&#8217;ve posted here over the last year or so. Thanks to the folks on #puppet who read over them and gave editing suggestions.

Slides for presentation
Handouts for presentation

Update: So [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m heading to the <a href="http://www.tntech.edu/itsymposium/">IT Symposium</a> this morning to give a talk on creating a managed Unix infrastructure from scratch, somewhat of a summary of several things I&#8217;ve posted here over the last year or so. Thanks to the folks on #puppet who read over them and gave editing suggestions.</p>
<ul>
<li><a href='http://blogs.cae.tntech.edu/mwr/files/2008/04/unix_infrastructure_management_from_scratch_slides.pdf' title='Slides for presentation'>Slides for presentation</a></li>
<li><a href='http://blogs.cae.tntech.edu/mwr/files/2008/04/unix_infrastructure_management_from_scratch_handouts.pdf' title='Handouts for presentation'>Handouts for presentation</a></li>
</ul>
<p><strong>Update:</strong> So yesterday, I get an email regarding my presentation (well, the slides, at least). No reason to clutter up the main page with it though, so if you&#8217;re not happy with the slides and want to express your displeasure, read the rest after the jump and see if I&#8217;ve addressed your concerns already.<span id="more-62"></span></p>
<blockquote><p>
Hi Mike,</p>
<p>I&#8217;ve visited your site before and found your Debian preseeding info to be useful.</p>
<p>That said, I just went through your presentation slides and must say I&#8217;m very disappointed.  It contains numerous examples of what gives sysadmins a bad name.  Egotistical, &#8220;I&#8217;m right, you&#8217;re stupid&#8221;, &#8220;I did this because I&#8217;m way too busy doing more important things than you&#8221;, etc. comments abound.</p>
<p>On several occasions your first bullet-point was &#8220;just do it&#8221;, or &#8220;you need this&#8221;.  Hey Mike, people don&#8217;t come to conferences and presentations to listen to a smart-ass.</p>
<p>You mentioned that the people in #puppet gave you useful feedback.  Next time you give a presentation, also get feedback from non-geeks.  They&#8217;ll help you filter out the cruft that makes you look like a spoiled 5-year old talking about his new widget set at show-and-tell.</p>
<p>I hope for the sake of the attendees that your verbal presentation was better than your slideshow.
</p></blockquote>
<p>To respond to the comments more or less in order:</p>
<ul>
<li>Sorry you didn&#8217;t like my slides. At first, I thought you were an irritated audience member who waited a couple of weeks before emailing me. But since you&#8217;re apparently only judging this based off the slides, that&#8217;s different.</li>
<li>&#8220;I&#8217;m right, you&#8217;re stupid&#8221; is in the eye of the reader. Though you can&#8217;t tell without the soundtrack, it tended to work out more like &#8220;I used to do things one way, which probably is the most common way everyone else does it. It didn&#8217;t scale for the following reasons, and here&#8217;s what I&#8217;m doing instead.&#8221;</li>
<li>&#8220;I did it this way because I&#8217;m way too busy doing more important things than you&#8221; is a bit of an exaggerated inference. Am I busy? Sure. Am I busy doing things that most sysadmins don&#8217;t have to deal with? As far as I can tell, yes; most of the sysadmins in my immediate vicinity (and from past experience over the last 15-20 years) don&#8217;t have major duties outside systems administration, just like most of the engineers don&#8217;t have major duties outside their specialty or lab. These non-sysadmin tasks aren&#8217;t necessarily more important <em>per se</em>, but they&#8217;re important in my particular job description. The hours these other tasks take up in my week force me to find more efficient methods to do the systems administration tasks; others will possibly hit the same walls I have at different times &#8212; maybe when they have to keep track of 300 servers in 10 different roles, where all servers in a particular role have to be interchangeable. Maybe when they get a 1000 node cluster where a particular application has to be installed identically on every node, and on every node to be purchased in the future. My belief is that as time goes on, we&#8217;re all going to be managing more systems, not fewer, and that methods we use for managing a few systems relatively well don&#8217;t scale to larger groups of computers.</li>
<li>&#8220;Just do it&#8221; or &#8220;You need this&#8221; shows up in three places: using version control, using NTP for time synchronization, and using SMTP for email. I stand by each of those points, being entirely convinced by the verbiage at <a href="http://infrastructures.org/">infrastructures.org</a> that was my primary source material. I cannot fathom why someone would use something other than SMTP for sending email, why they wouldn&#8217;t want version control of some form as the code that automates their systems administration tasks grows more complicated, or why they&#8217;d use a different protocol to synchronize their system clocks. To me, each of those is as self-evident as &#8220;your SAN should have redundant power supplies&#8221; and &#8220;racks are a good way to house a bunch of servers in a small space&#8221;. You may have counterexamples, but since you didn&#8217;t provide any, I&#8217;m left in the dark.</li>
<li>The folks on #puppet did give me some useful feedback. As for other feedback, I did ask a coworker to look at the slides, and he saw no problems with them. However, he&#8217;s a full-time Windows systems administrator, so his opinion may be suspect. As for non-geeks, they&#8217;re really not the intended audience, were generally absent from the conference, and aren&#8217;t too likely to be interested in systems administration techniques.</li>
<li>Cruft in the verbal presentation? Guilty, but some might call it illustrative anecdotes. Personally, I&#8217;ve always tried to work in <a href="http://www.sciencecartoonsplus.com/">Sidney Harris</a>&#8216; &#8220;I think you should be more explicit here in step two&#8221; joke into at least one over-equationed lecture per semester. The students seem to enjoy it:<br />
<img src='http://blogs.cae.tntech.edu/mwr/files/2008/05/math07.gif' alt='I think you should be more explicit here in step two' /><br />
Cruft in the slides? Matter of opinion, I guess. I did run out of time, but I honestly hadn&#8217;t done enough practice runs to see how long it would actually take.</li>
<li>As for the spoiled five-year-old showing off his new widget set at show-and-tell, I have trouble understanding the issue. Lots of the talks at these conferences are basically a show-and-tell: other talks included &#8220;Software Deployment Using Ghost&#8221;, &#8220;Virtualizing Business Continuity &#8212; Getting Your Systems Back Online,&#8221; &#8220;DBA Task Automation II: Extending the Basics, Best Practices, Processes and Icing,&#8221; etc. When I submit an abstract saying that I&#8217;m going to give a talk about what goes into a &#8220;managed infrastructure,&#8221; its benefits over regular administration methods, and talk about a particular tool we use to accomplish some of these tasks, exactly what do I change in material? What do I change in delivery (that you didn&#8217;t see)? You&#8217;ve never told coworkers &#8220;holy crap, this Linux thing is awesome! It&#8217;s like Unix, but free and runs on regular PCs!&#8221; or similar? Nothing about using PHP to format stuff out of a database for some dynamic web pages? Nothing about a CMS or blogging platform that lets you do all the things a CMS or blog is supposed to do? Nothing about rrdtool, Nagios, cacti, apt-get, Perl/Python/Ruby or some other tool that you didn&#8217;t write, but by gosh it&#8217;s going to make all of your lives easier?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.cae.tntech.edu/mwr/2008/04/22/giving-a-presentation-at-the-tennessee-higher-education-it-symposium/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Unattended Debian Installations (or How I Learned to Stop Worrying and Love the preseed.cfg)</title>
		<link>http://blogs.cae.tntech.edu/mwr/2007/04/17/unattended-debian-installations-or-how-i-learned-to-stop-worrying-and-love-the-preseedcfg/</link>
		<comments>http://blogs.cae.tntech.edu/mwr/2007/04/17/unattended-debian-installations-or-how-i-learned-to-stop-worrying-and-love-the-preseedcfg/#comments</comments>
		<pubDate>Tue, 17 Apr 2007 13:46:28 +0000</pubDate>
		<dc:creator>Mike Renfro</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[infrastructures]]></category>

		<guid isPermaLink="false">http://blogs.cae.tntech.edu/mwr/2007/04/17/unattended-debian-installations-or-how-i-learned-to-stop-worrying-and-love-the-preseedcfg/</guid>
		<description><![CDATA[A CMR project recently bought 12 new Dell PowerEdge SC1435 servers to replace some of our aging compute cluster systems. In previous server rollouts, I&#8217;d generally get one system installed and configured, image it with SystemImager, and then PXE-boot the rest of the systems to pull that image. However, it&#8217;s tough to audit exactly what [...]]]></description>
			<content:encoded><![CDATA[<p>A CMR project recently bought 12 new Dell PowerEdge SC1435 servers to replace some of our aging compute cluster systems. In previous server rollouts, I&#8217;d generally get one system installed and configured, image it with SystemImager, and then PXE-boot the rest of the systems to pull that image. However, it&#8217;s tough to audit exactly what got installed, and how. It&#8217;s also arguably a waste of space to keep images of all the types of cluster systems we have (PowerEdge 2650, PowerEdge 1850, PowerEdge 1855, Dimension 9200, etc.). So enter <a href="http://d-i.alioth.debian.org/manual/en.i386/apb.html">Debian Preseeding</a>. With preseeding, I can make a text file that describes what packages I want installed, debconf configurations that vary from the default, how I want the partitioning done, copy configuration files from web or ftp servers to the target drive, etc. It took a few days to get going, but the long-term payoff should be enormous.</p>
<p>The resulting installation timeline for a PowerEdge SC1435 (relative to power-on in HH:MM:SS):</p>
<ul>
<li>00:00:25 &#8211; Power-on self tests have completed enough to allow me to hit F12 for PXE boot.</li>
<li>00:01:20 &#8211; Rest of power-on self tests have completed, PXE boot process starts. All installation parameters are passed in from the pxelinux.cfg file on the DHCP server or the preseed.cfg file on a nearby ftp server.</li>
<li>00:04:50 &#8211; Base and standard task packages installed. openssh-server and puppet packages are installed. puppet defaults file is downloaded. System starts formatting a 500GB SATA drive for /tmp space.</li>
<li>00:08:20 &#8211; System finishes formatting /tmp, and reboots since that was the last step of the unattended install.</li>
<li>00:09:30 &#8211; System is at login prompt. Root password works. puppet will take over installing miscellaneous packages and other post-installation configuration tasks. Once puppet has finished copying over root@adminserver&#8217;s public key, I can log in from adminserver without being prompted for a password.</li>
</ul>
<p>Total number of keypresses from power-up to login: 1. Annotated preseed and pxelinux files after the jump.</p>
<p><span id="more-11"></span><br />
PXELinux config file (amd64 version, i386 would be nearly identical &#8212; the contents of the &#8220;append&#8221; line should be all on one line. It&#8217;s broken here for readability.)</p>
<pre>default preseed
label preseed
kernel debian-installer/amd64/linux
append initrd=debian-installer/amd64/initrd.gz ramdisk_size=10800 root=/dev/rd/0 rw auto
  url=http://REDACTED/./preseed.cfg console-keymaps-at/keymap=us locale=en_US interface=eth0
  hostname=x domain=x netcfg/dhcp_timeout=60 --
prompt 1
timeout 1</pre>
<p>Changes versus <a href="http://ftp.debian.org/debian/dists/etch/main/installer-amd64/current/images/netboot/pxelinux.cfg/default">the default configuration</a>:</p>
<ol>
<li>Removed display command for splash screen. At one point, I was running out of parameter space on the append line, and removing &#8216;vga=normal&#8217; was one space saver. I didn&#8217;t expect the splash screen to work once that was removed, so I dumped it as well.</li>
<li>Removed F1, F2, &#8230; , F9, F0 commands for online help. Optional.</li>
<li>Changed &#8216;default install&#8217; to &#8216;default preseed&#8217;.</li>
<li>Added preseed stanza, with default kernel, but much different append options.</li>
<li>At the time I started this, the default pxelinux config file had entries for the ramdisk size and root device; these do not appear in the current Debian config file, and I&#8217;ll remove mine once I verify that they&#8217;re unneeded.</li>
<li>Added append option &#8216;auto url=http://REDACTED/./preseed.cfg&#8217; to define location of preseed configuration file.</li>
<li>Added append options &#8216;console-keymaps-at/keymap=us&#8217; and &#8216;locale=en_US&#8217; to define basic localization for the installation.</li>
<li>Addd append options &#8216;interface=eth0&#8242;, &#8216;hostname=x&#8217;, &#8216;domain=x&#8217;, and &#8216;netcfg/dhcp_timeout=60&#8242; to get the networking configured. The &#8216;hostname=x&#8217; and &#8216;domain=x&#8217; parameters were one of the last tricky bits. I had wrongly assumed that specifying that I&#8217;d be using DHCP to get my address would make it pass over asking for a hostname and domain. Preseeding dummy values for each gets past the questions, and DHCP overrides the dummy values as soon as the DHCP negotiation is done.</li>
<li>Changed &#8216;timeout 0&#8242; to &#8216;timeout 1&#8242; to allow the installer to proceed without me manually selecting any configurations. Obviously, you may want to increase the timeout to some larger value if you need more time to hit a key to override something for testing.</li>
</ol>
<p>preseed.cfg (the contents of the &#8220;d-i preseed/late_command&#8221; line should be all on one line. It&#8217;s broken here for readability.):</p>
<pre>### References:
###  http://d-i.alioth.debian.org/manual/en.amd64/install.en.pdf
###  http://d-i.alioth.debian.org/manual/example-preseed.txt
###  http://www.hands.com/d-i/etch/classes/

### This file needs to be at
### http://REDACTED/preseed.cfg and
### referenced via boot arguments as
### http://REDACTED/./preseed.cfg

### Generic settings applicable to all CAE Debian systems

d-i debian-installer/locale string en_US
d-i console-tools/archs select at
d-i console-keymaps-at/keymap select American English
d-i debian-installer/keymap string us
d-i netcfg/choose_interface select eth0
d-i netcfg/dhcp_timeout string 60
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_hostname seen true
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/get_domain seen true
d-i netcfg/dhcp_options select Retry network autoconfiguration
d-i mirror/codename string etch
d-i mirror/country string enter information manually
d-i mirror/http/countries select enter information manually
d-i mirror/http/directory string /debian/
d-i mirror/http/hostname string ftp.cae.tntech.edu
d-i mirror/http/proxy string
d-i clock-setup/utc boolean false
d-i time/zone string US/Central
d-i apt-setup/security_host string
d-i apt-setup/local0/repository string http://ftp.cae.tntech.edu/debian-security etch/updates main

# XXX -- TEMPORARY HACK UNTIL WE GET A SIGNED LOCAL REPOSITORY
d-i debian-installer/allow_unauthenticated string true

d-i passwd/make-user boolean false
d-i passwd/root-password-crypted password $1$REDACTED
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
tasksel tasksel/first multiselect standard
d-i pkgsel/include string puppet lsb-release openssh-server
d-i finish-install/reboot_in_progress note

popularity-contest popularity-contest/participate boolean false

### Less generic settings

# Partitioning:
# sda1: 40-100MB for /boot
# sda2: majority of remaining space for /
# sda3: 64MB-(2*RAM) for swap
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-auto/expert_recipe string
  boot-root ::
    40 50 100 ext3
      $primary{ } $bootable{ }
      method{ format } format{ }
      use_filesystem{ } filesystem{ ext3 }
      mountpoint{ /boot }
    .
    500 10000 1000000000 ext3
      method{ format } format{ }
      use_filesystem{ } filesystem{ ext3 }
      mountpoint{ / }
    .
    64 512 200% linux-swap
      method{ swap } format{ }
    .
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select Finish partitioning and write changes to disk
d-i partman/confirm boolean true

# Some systems may vary on /tmp -- many have separate disks for it
# (/dev/sdb1), some may have a separate partition on the sda
# drive. This needs to be split out into a system-specific file and
# chained in via class tmp_on_sdb1
# Only applicable for hosts with separate /tmp disk on /dev/sdb1 --
# PE1855 blades (ch226-11...-19), SC1435 servers (ch226-21...-32), old
# ch208a
d-i preseed/late_command string wget -O /target/etc/default/puppet http://REDACTED/puppet ;
  wget -O /target/root/caeftp_key.asc http://REDACTED/caeftp_key.asc ;
  in-target apt-key add /root/caeftp_key.asc ; echo ';' | sfdisk /dev/sdb ; mke2fs -j -q /dev/sdb1 ;
  echo '/dev/sdb1 /tmp ext3 defaults 0 2' &gt;&gt; /target/etc/fstab; cp /var/log/syslog /target/root</pre>
<p>I&#8217;m not going to run through every change made in the preseed.cfg file, since the options are well-documented and what&#8217;s useful in one environment won&#8217;t necessarily translate to another. But I am mildly proud of the late_command at the end: this does two things that were minor pains on a normal preseed installation:</p>
<ol>
<li>Bootstraps a basic puppet defaults file over to the target drive. Grabbing /etc/default/puppet from a remote site before rebooting makes sure that when puppetd starts up, that it can contact the central server for key signing, and work normally afterwards.</li>
<li>Partitions and formats /dev/sdb to be my /tmp directory. Debian-installer&#8217;s partman can&#8217;t partition more than one disk automatically, but each of these new systems had a second drive I had planned on using for /tmp. <a href="http://www.linuxcommand.org/man_pages/sfdisk8.html">Sfdisk</a> comes to the rescue. The input format description in the sfdisk man page indicates that if you give it a line with no values specified, it will make a partition from the first nonassigned sector to the maximum size, and set the ID to 83 for a Linux partition. So the first time I run this, I go from a drive with an empty partition table to one with a giant partition 1, exactly what I wanted. Subsequent times I run this, it should leave the partition table unmodified, which is also fine. I can&#8217;t find the original hint I found for this use of sfdisk.</li>
</ol>
<p>My /etc/default/puppet is:</p>
<pre>
# Puppet doesn't like starting before it can contact the puppetmaster.
# Wait up to 30 seconds before continuing.

for n in `seq 1 30`; do
  ping -c 1 REDACTED &gt;&amp; /dev/null &amp;&amp; break
  echo -n " $n"
  sleep 1
done
DAEMON_OPTS="--server REDACTED --factsync"
</pre>
<p>You may be able to avoid putting in the 30-second sleep, but at one point, with some puppet version, it was helpful on DHCP-managed systems. The critical thing to override on Debian, though, is the <code>-w 0</code> flag in the default DAEMON_OPTS in /etc/init.d/puppetd. Removing it ensures that puppetd will start up, contact the gold server for key signing, and wait for the signing to happen, rather than immediately exit.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.cae.tntech.edu/mwr/2007/04/17/unattended-debian-installations-or-how-i-learned-to-stop-worrying-and-love-the-preseedcfg/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
