DevConf.us 2019 was August 15-17 in Boston
this year. I helped run the Foreman booth with Ian Ballou (@iballou) and John Mitsch (@John_Mitsch),
demoing Foreman’s capabilities through user workflows depending on what people
were interested in seeing. We saw some industry folks as well as many Boston
University students; The conference was held in the BU Student Union building,
afterall, and many of the speakers were BU students or alumni. There were even
presentations from high school students mentored by Red Hat interns from BU.
Overall, it’s clear there is some really great collaboration between Red Hat and
students in Boston.
Some from the industry were already using Foreman and were excited to see new
features in the recent versions (some were running Foreman as old as 1.10!),
while others jokingly asked if we were demoing the
Foreman gem and found humor in the fact
that Foreman was using the Foreman gem in part for development.
As expected, most users of Foreman were using only some small subset of features available.
Very few users wanted to see increased Puppet support - in fact, some users
wanted to see less of a Puppet mandate. It was suggested that some of the lifecycle
management part of puppet, namely environments, should be first-class objects in
Foreman, not necessarily associated with just Puppet. The ability to have a Dev
→ Test → Production promotion of Ansible rules or Salt recipes, for example,
is desired. In addition, confusion with puppet environments vs. lifecycle
environments in Katello continues to be a pain point for UX in general. As a
first thought, allowing a generic pluggable environment in Foreman would be a great tool
for plugin authors/maintainers to allow lifecycle management of whatever the
resource may be, whether content, configuration, or provisioning related.
Students were mostly interested in learning more about what a company like Red
Hat is contributing to the open source community and how they could get
involved. Many were interested in Foreman’s underlying technologies, most were
happy to hear that we use Rails and React atop Postgres, most quite familiar to
the students we talked to. Of course, I was sure to mention the amazing Foreman
community we’ve all worked so hard to help build.
On Saturday there were lightning talks which anyone could sign up for. The talks
were voted on, and the top 3 were presented. The first talk was about speech recognition
using machine learning by a BU student. The second talk was also a BU student
talking about Women in Open Source. The Pulp team presented third on Pulp 3:
Stop Using rsync to Sync EPEL. My talk about how Red Hat operates in Open
Source communities was voted 4th, so I did not get to present.
While sitting at our booth, we had some discussions amongst ourselves about ways to improve
Foreman as well:
- The confusion around environments and the ability to have
lifecycle management in more than just content and Puppet, as already mentioned,
was one. Think about (i.e.) lifecycle environments for SCAP policies or
lifecycle for salt states. If this is supported for any given resource (such as
foreman_salt), it is reinvented each time and not associated with other
environments from other plugins (or core for Puppet environments). For mixed
infrastructures with multiple configuration management plugins enabled, it’d be
much nicer for users to be able to see all the resources that are part of a
given environment, regardless of which plugin the resources originate. - Another was the unification of hosts vs. content hosts - there was some
effort in the past to unify the underlying models, but the UX in this area could
still be improved to unify the concept of a host in the UI/CLI. - How to test/gate releases upstream better: As we were preparing for this
conference, we found several bugs in Foreman 1.22 that we reported and/or
worked around directly on the demo environment. Could we include more end to
end tests that are automatically run? Existing method to gate a nightly
release is bats tests, but developers hardly ever update bats to cover new
features or bugs; is this because bats lives with forklift rather than
Foreman/the relevant plugin? Perhaps we could add end to end tests in the same
repository as the code to increase the liklihood that a feature/bug fixer
updates end to end tests. Other issues with bats: if hammer is broken, bats
fails. Is this a feature of bats that we’re also testing hammer or just a
hinderance? I’d argue we should be testing hammer for sure in end to end
tests, but is bats the best way? Should we have end to end tests for the UI
using Selenium or a JS based suite? - Groups or collections of hosts - hostgroups are only for changing hosts during
provisioning. There is no way to group hosts outside of provisioning unless
each plugin provides a grouping mechanism (i.e. host collections from
Katello). Host groups should be a Foreman primative that is not only for
provisioning and is also pluggable. Changing certain fields in the group
should update hosts immediately, while others only affect hosts during the
provisioning process.
The following are my more raw notes day by day:
2019-08-15 Thursday
- Datto
- Foreman 1.10, mostly used as puppet master
- Many OS types (SUSE, CentOS, Ubuntu)
- Multi-arch containers in quay? [TODO: follow up]
- ‘Runbook task’ for allowing a user/role to run only a set of commands, and
no permissions to change the runbook/command itself [RFE] - Need better searchability on community demos [Community RFE, add timestamps to demo descriptions on YouTube]
- 4000 systems, 3-4 proxies, 2 redundant puppet masters
- Salt is used to run Ansible at scale
- Katie Riker UX talk
- Wizard of Oz UX study, having a real person respond like the system would
(useful for CLI UX studies without having to implement any code) - Knowledge bias, addressing assumptions
- Clear error messages, tell the user how to solve the problem
- Wizard of Oz UX study, having a real person respond like the system would
- Ampere Computing
- Puppet 6 support in Foreman 1.22 is great!
- ARM provisioning?
- Foreman discovery image support ARM?
- Does syslinux work on ARM?
- They use Beaker in production
- Follow up with Peter Pouliot from Ampere about ARM provisioning
- iPXE supports ARM iPXE - open source boot firmware [cfg:platform], but does Foreman’s DHCP allow “option 93” mentioned in that doc?
- It seems like this is possible, based on the provisioning templates docs.
I’d love some insight here from someone who knows for sure or has done it themselves
- Using Chef with Foreman
- Lots of people that were BU students that didn’t know about Foreman or many of
the concepts involved- Asked how best to get internships
- Answer includes: Open Source focus
- Swag suggestion: Foreman breakfast bowls?
2019-08-16 Friday
- Bug when using dnsmasq with NetworkManager on the same box as Foreman
- Smart Proxy dns doesn’t match /etc/resolv.conf
- When looking for dns conflicts, Foreman queries the dns host in
/etc/resolv.conf instead of the DNS server in the proxy
2019-08-17 Saturday
- Datto again
- Ansible with Foreman doesn’t support environments?
- 4000 systems, 35 environments, 300 hostgroups
- changing the environment for a system changes the use of a system
- environments should be a foreman primative, as it’s presented in the UI that way
- Ansible doesn’t scale to 1000s of systems? Need to configure fan out? Is that possible?
- Expose ansible inventory groups in Foreman (i.e. host collections for Ansible)