<div dir="ltr">Hi,<div>I like option number 3 the most from reading the comments.<div>We are not a configuration management system, so custom rules should not be a main consideration.</div><div>VDSM should probably enable the firewalld rules it needs to work and engine should not care about firewall at all.</div><div>A user wanting to add more rules then this should probably use the ones planned in:</div><div><a href="https://github.com/cockpit-project/system-api-roles">https://github.com/cockpit-project/system-api-roles</a><br></div><div><br></div><div><br></div><div>Thanks,</div><div><br></div></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><pre cols="72"><span style="font-family:arial,helvetica,sans-serif">Yaniv Dary
Technical Product Manager
Red Hat Israel Ltd.
34 Jerusalem Road
Building A, 4th floor
Ra&#39;anana, Israel 4350109

Tel : +972 (9) 7692306
        8272306
Email: <a href="mailto:ydary@redhat.com" target="_blank">ydary@redhat.com</a>
IRC : ydary</span></pre>
</div></div></div></div></div>
<br><div class="gmail_quote">On Mon, Mar 27, 2017 at 2:10 PM, Martin Sivak <span dir="ltr">&lt;<a href="mailto:msivak@redhat.com" target="_blank">msivak@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">&gt; Right, so why not create an Ansible playbook which the users can change<br>
&gt; (extend?), based on <a href="http://docs.ansible.com/ansible/firewalld_module.html" rel="noreferrer" target="_blank">http://docs.ansible.com/<wbr>ansible/firewalld_module.html</a> ?<br>
<br>
</span>I think I like the playbook proposal the best.<br>
<br>
Lets assume the engine provides a firewall.yaml playbook somewhere in /etc:<br>
<br>
 - The default playbook would contain our default firewalld<br>
configuration (we should also provide it in /usr/share/doc to give the<br>
user a reference)<br>
 - The engine or host deploy script can provide ansible variables so<br>
the playbook can even be a parametrized one (port numbers)<br>
 - The user can add rules he needs<br>
 - The user can REPLACE the content with iptables rules if he wishes<br>
so (we can even say it is unsupported, but possible)<br>
<br>
As an extension:<br>
<br>
 - We can provide ovirt-engine-firewalld ansible role with the default<br>
config so we can properly update files using RPM. The user defined (or<br>
default) playbook would just call this role and would stay intact<br>
during package upgrades.<br>
<br>
This is outside of database, allows customization and adapts to<br>
whatever firewall backend we might need.<br>
<br>
--<br>
Martin Sivak<br>
SLA / oVirt<br>
<div class="HOEnZb"><div class="h5"><br>
On Mon, Mar 27, 2017 at 12:46 PM, Yaniv Kaul &lt;<a href="mailto:ykaul@redhat.com">ykaul@redhat.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Mar 27, 2017 at 1:20 PM, Martin Perina &lt;<a href="mailto:mperina@redhat.com">mperina@redhat.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Mar 27, 2017 at 12:00 PM, Yaniv Kaul &lt;<a href="mailto:ykaul@redhat.com">ykaul@redhat.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Mon, Mar 27, 2017 at 11:55 AM, Martin Perina &lt;<a href="mailto:mperina@redhat.com">mperina@redhat.com</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; so personally I don&#39;t like the current way how we store firewall<br>
&gt;&gt;&gt;&gt; configuration within engine (saving complete iptables commands as string). I<br>
&gt;&gt;&gt;&gt; think should change the way how we store firewall configuration:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; 1. On engine side I&#39;d just store which services/ports (or port ranges)<br>
&gt;&gt;&gt;&gt; need to be enabled on host. By default only those services/ports that engine<br>
&gt;&gt;&gt;&gt; needs, but we can maintain also custom services defined by users<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Agreed. I hope that&#39;s enough on one hand, on the other hand, users can<br>
&gt;&gt;&gt; probably easily extend it via Ansible to the hosts and execution of a more<br>
&gt;&gt;&gt; customized firewalld configuration there - we probably should not own it.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Right, we should take care only about services/ports which we need. So we<br>
&gt;&gt; probably could drop the ability for users to define their own custom<br>
&gt;&gt; services/ports within engine for firewalld and force them to use Ansible or<br>
&gt;&gt; other tools to handle their own configuration.<br>
&gt;<br>
&gt;<br>
&gt; Right, so why not create an Ansible playbook which the users can change<br>
&gt; (extend?), based on <a href="http://docs.ansible.com/ansible/firewalld_module.html" rel="noreferrer" target="_blank">http://docs.ansible.com/<wbr>ansible/firewalld_module.html</a> ?<br>
&gt; ...<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; 2. Write plugin to ovirt-host-deploy which will translate those<br>
&gt;&gt;&gt;&gt; services/ports into actual firewall configuration on the host (it should<br>
&gt;&gt;&gt;&gt; detected what firewall is currently enabled and adapt)<br>
&gt;<br>
&gt;<br>
&gt; ...  and then ovirt-host-deploy will be in charge of executing that<br>
&gt; playbook? Seems fairly straightforward.<br>
&gt; Y.<br>
&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Agreed.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; 3. For newly installed host I&#39;d just use firewalld<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Agreed.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; 4. Also for 4.2 clusters I&#39;d switch from iptables to firewalld when you<br>
&gt;&gt;&gt;&gt; execute Reinstall (we should document this and make firewalld preferred<br>
&gt;&gt;&gt;&gt; solution)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; That&#39;s a good question. If a user had the default, non-changed policy we<br>
&gt;&gt;&gt; have had in iptables - sure.<br>
&gt;&gt;&gt; If not, I think it may be a bit of a challenge to switch otherwise.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Right. We could detect if there&#39;s some custom firewall rules in<br>
&gt;&gt; IPTablesConfigSiteCustom engine-config option and if not we could probably<br>
&gt;&gt; assume that switching to firewalld could be performed.<br>
&gt;&gt;<br>
&gt;&gt; We could also mark iptables configuration as deprecated in 4.2 and declare<br>
&gt;&gt; that it will be removed in 4.3. That would add some time for users to<br>
&gt;&gt; prepare for the switch ...<br>
&gt;&gt;<br>
&gt;&gt;&gt; Y.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Martin<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Mon, Mar 27, 2017 at 8:01 AM, Yedidyah Bar David &lt;<a href="mailto:didi@redhat.com">didi@redhat.com</a>&gt;<br>
&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; On Sun, Mar 26, 2017 at 6:01 PM, Leon Goldberg &lt;<a href="mailto:lgoldber@redhat.com">lgoldber@redhat.com</a>&gt;<br>
&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt; &gt; Effectively, upgrading will leave lingering (but nonetheless<br>
&gt;&gt;&gt;&gt;&gt; &gt; operational)<br>
&gt;&gt;&gt;&gt;&gt; &gt; iptables rules on the hosts. I&#39;m not even sure there needs to be<br>
&gt;&gt;&gt;&gt;&gt; &gt; special<br>
&gt;&gt;&gt;&gt;&gt; &gt; upgrade treatment?<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Please describe the expected flow.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Please note that at least when I tried, &#39;systemctl start firewalld&#39;<br>
&gt;&gt;&gt;&gt;&gt; stops<br>
&gt;&gt;&gt;&gt;&gt; iptables.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Thanks,<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; On Sun, Mar 26, 2017 at 4:59 PM, Yedidyah Bar David &lt;<a href="mailto:didi@redhat.com">didi@redhat.com</a>&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; On Sun, Mar 26, 2017 at 4:49 PM, Leon Goldberg &lt;<a href="mailto:lgoldber@redhat.com">lgoldber@redhat.com</a>&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; 1) Do we actually need iptables for any reason that isn&#39;t a legacy<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; consideration?<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; No idea personally.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Perhaps some users prefer that, and/or need that for integration<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; with<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; other<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; systems/solutions/whatever.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; If we drop iptables, how do you suggest to treat upgrades?<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; 2 &amp; 3) I am in favor of treating custom services as a requirement<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; and<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; plan<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; accordingly. Many (most, even) of the services are already<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; provided by<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; either firewalld itself (e.g. vdsm, libvirt) or the 3rd party<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; packages<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; (e.g.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; gluster). Some are missing (I&#39;ve recently created a pull request<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; for<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; ovirt-imageio to firewalld, for example) and I hope we&#39;ll be able<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; to get<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; all<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; the services to be statically provided (by either firewalld or the<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; relevant<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; 3rd party packages).<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; Ideally I think we&#39;d like use statically provided services, and<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; provide<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; the<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; capability to provide additional services (I&#39;m not a fan of the<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; current<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; methodology of converting strings into xmls). I don&#39;t think we&#39;d<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; want to<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; limit usage to just statically provided services. (2)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; As previously stated, I don&#39;t see a technical reason to keep<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; iptables<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; under<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; consideration. (3)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; On Sun, Mar 26, 2017 at 2:57 PM, Yedidyah Bar David<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; &lt;<a href="mailto:didi@redhat.com">didi@redhat.com</a>&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; 1. Do we want to support in some version X both iptables and<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; firewalld,<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; or<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; is it ok to stop support for iptables and support only firewalld<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; without<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; overlap? If so, do we handle upgrades, and how?<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; 2. Do we want to support custom firewalld xml to be configured on<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; the<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; host by us? Or is it ok to only support choosing among existing<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; services,<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; which will need to be added to the host using other means<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; (packaged by<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; firewalld, packaged by 3rd parties, added manually by users)?<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; 3. Opposite of (2.): Do we want to support firewalld services<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; that are<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; added to the host using other means (see there)? Obviously we do,<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; but:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; If we do, do we still want to support also iptables (see (1.))?<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; And if<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; so, what do we want to then happen?<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; (2.) and (3.) are not conflicting, each needs its own answer.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;&gt; Didi<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Didi<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt; Didi<br>
&gt;&gt;&gt;&gt;&gt; ______________________________<wbr>_________________<br>
&gt;&gt;&gt;&gt;&gt; Devel mailing list<br>
&gt;&gt;&gt;&gt;&gt; <a href="mailto:Devel@ovirt.org">Devel@ovirt.org</a><br>
&gt;&gt;&gt;&gt;&gt; <a href="http://lists.ovirt.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.ovirt.org/<wbr>mailman/listinfo/devel</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; ______________________________<wbr>_________________<br>
&gt;&gt;&gt;&gt; Devel mailing list<br>
&gt;&gt;&gt;&gt; <a href="mailto:Devel@ovirt.org">Devel@ovirt.org</a><br>
&gt;&gt;&gt;&gt; <a href="http://lists.ovirt.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.ovirt.org/<wbr>mailman/listinfo/devel</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; ______________________________<wbr>_________________<br>
&gt; Devel mailing list<br>
&gt; <a href="mailto:Devel@ovirt.org">Devel@ovirt.org</a><br>
&gt; <a href="http://lists.ovirt.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.ovirt.org/<wbr>mailman/listinfo/devel</a><br>
______________________________<wbr>_________________<br>
Devel mailing list<br>
<a href="mailto:Devel@ovirt.org">Devel@ovirt.org</a><br>
<a href="http://lists.ovirt.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.ovirt.org/<wbr>mailman/listinfo/devel</a><br>
</div></div></blockquote></div><br></div>