** Description changed:

  [ Impact ]
- If the user has specified custom setup for the Pro client through cloud-init, 
there is a high chance that this setup will be ignored.
+ Currently, the Pro client support a daemon named ubuntu-advantage.service that
+ performs two actions:
  
- This happened due to a recent change made on the Pro client. We
- identified a race condition when our daemon waited for the cloud-config
- service to be finished. We have removed that condition, by manually
- checking the cloud-config service state in the daemon itself and only
- proceeding if it has already finished.
+ * Actively look for Pro licenses on Azure and GCP images to perform an 
auto-attach
+ * Retry auto-attach on Pro images if that command fails on boot
  
- However, there is a situation where the cloud-init service has not even
- started yet, which would generate a inactive state for the cloud-config
- service, allowing our daemon to proceed, causing the problem.
+ Therefore, this daemon is only being activated on Azure and GCP images
+ and all Pro cloud images.
+ 
+ This daemon was originally setup to run after the cloud-config.service. 
However,
+ due to a race condition, this is no longer happening. Right now, we manually
+ check in the daemon code to see if the cloud-config service has finished.
+ 
+ Unfortunately, this new logic now breaks the current Pro setup through
+ cloud-init userdata in both GCP and Azure Pro cloud images. That is
+ because our daemon is now running before cloud-init has even started
+ running. This means that the daemon will perform the attach and not
+ cloud-init itself. This will be clearer, in the following example:
+ 
+ Let's imagine this situation where a user is launching a Pro GCP image:
+ 
+ 1) User provides the following cloud-init userdata to the cloud image
+ before booting it:
+ 
+ #cloud-config
+ 
+ ubuntu_advantage:
+   enable: []
+ 
+ This means that the user wants to services to be enabled, but still want
+ to attach to the Pro license.
+ 
+ 2) Our daemon starts running before cloud-init has even started
+ 3) Our daemon see the cloud-config.service as inactive and proceeds normally
+ 4) Our daemon identifies that the user is running on a GCP instance and there 
is a valid Pro license for it.
+ 5) Due to that, our daemon auto-attach the machine completely ignoring the 
cloud-init directives.
+ 
+ Therefore, to fix that issue we need to guarantee that we will only
+ execute the daemon, if and only if, cloud-init has already started. That
+ is because, on this situation, the cloud-config.service will already
+ perform the attach operation following the user directives. When the
+ daemon starts running, it will see that the image is already attached
+ and do nothing.
+ 
+ Finally, given this scenario, this bug is only affecting GCP/Azure Pro
+ images, as these are the only ones that will be able to reach the flow
+ described here.
  
  [Discussion]
  
  To address that issue, we are now also checking if the cloud-init service
  has already started if we detect that cloud-config service is inactive. If it 
isn't, the daemon will sleep for an specific amount of time before trying again.
  
  [ Test Plan ]
  Since this is a first boot issue, we will need to create a custom image with 
the package in proposed. Then, we need to guarantee that Pro configuration 
delivered
  through cloud-init is being honored when we launch the image.
  
- CPC is already aware of this issue and will help us creating the test
- plan here.
+ Additionally, it is worth noting that we cannot reproduce this issue on
+ a VM easily. That is because, we would need "mock" the VM to pass as one
+ of the affected clouds and also add a valid Pro license to it.
+ 
+ However, CPC is already aware of this issue and will help us creating
+ the test plan here.
  
  [ Where problems could occur ]
  We are updating the cloud-init wait logic on the daemon. This could 
potentially make our daemon to not start. However, since we are just now 
waiting on the base cloud-init.service to start and we have already tested this 
solution in a custom image, we believe this is a low risk for this fix.
  
  [ Original Description ]
  We have recently updated the Pro to not strictly run after 
cloud-config.service. If cloud-config.service has not been started when pro 
runs, it can complete before cloud-config.service begins and thus the 
user-specificed pro configuration will be ignored since the instance is already 
attached.
  
  When cloud-config.service has yet to run, ubuntu-advantage.service
  should wait until it's finished before running.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2059952

Title:
  pro sometimes runs before cloud-config.service

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-advantage-tools/+bug/2059952/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to