I have some notes on model theory from a graduate class I taught at Indiana University. I covered all the topics you listed except ultraproducts. Many of the students in the class were not specializing in logic, so the notes might be at the right level for your masters course. They are available here: https://akruckman.faculty.wesleyan.edu/files/2019/07/Lecture-Notes.pdf
The main distinguishing feature of my notes is that I allow many-sorted logic and empty sorts from the beginning. I also emphasize the role of Stone duality throughout. As Joel says in a comment, the completeness theorem is not really relevant to model theory, so most model theory textbooks avoid defining formal proof and instead prove the compactness theorem directly. But I did prove completeness in these notes, mostly as an excuse to work out a proof system and proof of completeness that works for many-sorted logic with empty sorts and empty structures allowed.
Edit: Since this answer is getting so many upvotes, let me clarify that I am not in any way suggesting that my notes are better than the books suggested in the other answers. I think that the classics by Hodges and Marker are still the best places to learn model theory, complemented by the book by Tent & Ziegler (which is my favorite, but which I think is less suitable for a first course). The main reason I suggested my notes is that the OP specifically asked for a book that covers the completeness theorem, and this is absent from Marker, Hodges, and Tent-Ziegler.